[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Rafael Duardo
Criador Rafael Duardo 23/04/2022

Boa tarde, Carlos, estou com o seguinte problema há uns dias. quando eu envio um email com anexos e sem usar fila o email é enviado, mas quando eu envio usando fila dá o seguinte erro Swift_IoException: Unable to open file for reading, você sabe o motivo? o código está assim:

 

public function build()
    {
        $this->subject('Autorização Para Editar')
        ->view('admin.email.proedi.relatorio.atualizar_relatorio_primeiro');

        foreach($this->datas['files'] as $file){
            $this->attach($file);
        }
               
        return $this;
    }

 

$datas = [];    
       
        if (isset($data['destino_mercadoria_upload'])) {
 
          $destino_mercadoria = $request->destino_mercadoria_upload;
 
          $filedestino_mercadoria = time().'.'.$destino_mercadoria->getClientOriginalName();
   
          $request->destino_mercadoria_upload->move('storage/app/public', $filedestino_mercadoria);
   
          $data['destino_mercadoria_upload'] =  $filedestino_mercadoria;

          $dat[] = 'storage/app/public/' . $data['destino_mercadoria_upload'];

            $datas = [
              'files' => $dat
            ];          
        }
Mail::to('[email protected]')->send(new AtualizarRelatorioProediPrimeiro($datas));
Manager Carlos Ferreira 23/04/2022

Olá, Rafael!
Tudo bem?

Você tem esse código no GitHub?

---

No loop, qual o conteúdo de $file?
dd($file);

Precisa usar os helpers do para passar o path full do arquivo (storage_path ou public_path):
storage_path($file)

Carlos Ferreira
Criador Rafael Duardo 23/04/2022

Boa tarde, Carlos, o GitHub é https://github.com/rafaduarte/sirn

a branch que estou trabalhando é a proedi.

já tentei com os  (storage_path ou public_path), mas não deu certo

Rafael Duardo
Criador Rafael Duardo 23/04/2022

boa noite, Carlos, complementando o exemplo está neste diretório https://github.com/rafaduarte/sirn/blob/master/app/Http/Controllers/Proedi/EnviarRelatorioController.php

que o controller de enviar relatório dentro do método de update

Rafael Duardo
Manager Carlos Ferreira 23/04/2022

No loop, qual o conteúdo de $file?
dd($file);

print: https://uploaddeimagens.com.br/

Carlos Ferreira
Criador Rafael Duardo 23/04/2022

$file é o caminho do arquivo que está em storage, pois estou utilizando o link simbolic,

com dd($file) retornar o primieiro caminho do loop

"storage/app/public/1650922059.webnewboletovi.pdf"
Rafael Duardo
Manager Carlos Ferreira 23/04/2022

Está errado esse path armazenado:
storage/app/public/1650922059.webnewboletovi.pdf

Deveria armazenar apenas o path relativo do arquivo "1650922059.webnewboletovi.pdf"

Porque assim você usaria o storage_path('1650922059.webnewboletovi.pdf') e o resultado final seria:
/var/www/diretorio-do-projoto/storage/app/public/1650922059.webnewboletovi.pdf

---

O problema real está no momento de fazer o upload, na realidade, no momento que salva path onde foi armazenado no banco;

Onde está o código que faz o upload do arquivo?
Eu posso verificar para você onde errou, caso não identifique;

Carlos Ferreira
Criador Rafael Duardo 23/04/2022

o código está assim:

https://uploaddeimagens.com.br/imagens/1cIIHoo

têm vários ifs como no print que move os uploads para storage

essa ação de enviar os emais com anexo só é para acontecer quando o usuário atualizar os arquivos

Rafael Duardo
Manager Carlos Ferreira 23/04/2022

Essa parte do código onde passa esse path manualmente está bem complicada, porque assim você fica preso a uma estrutura de diretórios pré-definida.

Procura usar a classe de Storage do Laravel, porque assim você usa as configurações de disks definida no arquivo de configuração.

Porque no final das contas você precisa recuperar o anexo com o caminho full, tipo:
/var/www/diretorio-do-projoto/storage/app/public/nome-do-arquivo.pdf

---

Neste curso aqui foi um dos que usei armazenamento, porém mais avançado, porque usamos uma classe de service só para fazer isso:
https://academy.especializati.com/curso/laravel-desenvolvendo-sistema-administracao

Carlos Ferreira
Criador Rafael Duardo 23/04/2022

Carlos, apliquei as funções da classe storage tanto no controller quanto na classe de email e deu certo, vou assistir o curso que voceê sugeriu, Obrigado.

Rafael Duardo
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!