Php anexo da string

Eu tenho um script que gera o arquivo .pdf. Este script retorna esse arquivo como seqüência de caracteres e então eu posso salvá-lo com file_put_contents ()

$output = $dompdf->output(); file_put_contents("myfile.pdf", $output); 

Quero adicionar este arquivo como anexo ao meu email usando o PHPMailer. Se eu tiver um arquivo no disco, basta escrever o caminho para ele e novo nome:

 $mail->addAttachment('/path/to/file.pdf', 'newname.pdf'); 

Mas posso adicionar anexo sem salvar myfile.pdf no disco? Algo parecido:

 $mail->addAttachment($output, 'myfile.pdf'); 

Esta cadeia retorna um erro:

 PHP Fatal error: Call to a member function addAttachment() on a non-object 

Como posso transformar o tipo de string para o tipo de arquivo sem salvar?

UPD: código completo

 $output = $dompdf->output(); $name = 'title.pdf'; $mail->isSMTP(); // Set mailer to use SMTP $mail->SMTPDebug = 2; $mail->Host = 'smtp.***.org'; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = '***@***.orgg'; // SMTP username $mail->Password = '******************'; // SMTP password $mail->SMTPSecure = 'tls'; $mail->From = 'aaa@bbb.com'; $mail->FromName = 'John'; $mail->addAddress('peter@parker.com', 'Joe User'); // Add a recipient $mail->addStringAttachment($output, $name); // Set email format to HTML $mail->Subject = 'Here is the subject'; $mail->Body = 'This is the HTML message body in bold!'; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; if(!$mail->send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; } else { echo 'Message has been sent'; } 

Existe um método addStringAttachment() que parece atender às suas necessidades:

addStringAttachment ()

 addStringAttachment(string $string, string $filename, string $encoding, string $type, string $disposition) : void 

Adicione uma string ou anexo binário (não-sistema de arquivos).

Esse método pode ser usado para append dados binários ou ascii, como um registro BLOB de um database.

Você não pode salvar o arquivo em um diretório temporário e, em seguida, anexá-lo a partir dele? E adicione algum código que, uma vez que PHPMailer->send() devolva TRUE, você exclui o arquivo temporário.

Olhe para a class PHPMailer e veja qual a verificação que faz no método addAttachment.

Além disso, o erro realmente parece que seu object PHPMailer não foi iniciado. Você pode postar seu bloco de código PHPMailer inteiro, por favor.

Isso é muito simples: basta chamar addStringAttachment vez de addAttachment :

 $mail->addStringAttachment($dompdf->output(), 'my.pdf'); 
Intereting Posts