Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gustalevin

Transformar conteúdo de e-mail em um PDF anexo

Recommended Posts

Olá,

 

Um site que assumi o desenvolvimento, pertencente a um cliente meu, faz o envio de vouchers de reservas ao e-mail do hóspede.

 

Contudo, gostaria de complementar o envio desses e-mails, colocando um PDF em anexo com todo o conteúdo do e-mail.

 

Como eu posso fazer isso?

 

Abraço,

Gustavo

Compartilhar este post


Link para o post
Compartilhar em outros sites

exemplo usando as class mPDF e PHPMailer

// MONTA PDF
$mpdf = new mPDF('win-1252','A4','','',10,10,15,10,5,5);
$mpdf->WriteHTML( $html ); // conteudo
$mpdf_anexo = $mpdf->Output('', 'S');

// MONTA E-MAIL
$mail = new PHPMailer();
[...]
$mail->AddStringAttachment($mpdf_anexo, 'voucher.pdf');
$mail->Send();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, Hugo.

Eu baixei a classe e inclui os códigos que tu me falou na função enviaMail, apenas com algumas modificações em nomes, claro:

function enviaEmail($de, $para, $assunto, $corpo,$bcc = NULL, $anexos = NULL){
	//$bcc = Cópia oculta
	set_time_limit(0);
	require_once '../libs/libMail/class.phpmailer.php';
	
	$mpdf = new mPDF('win-1252','A4','','',10,10,15,10,5,5);
	$mpdf->writeHTML($corpo);
	$mpdf_anexo = $mpdf->Output('','S');
	
	$mail = new PHPMailer();
	$mail->IsSMTP();
	$mail->Host = "mail.meusite.com.br";
	$mail->Port = 25;
	$mail->SMTPDebug = 1;
	//$mail->SMTPSecure = "ssl";
	$mail->SMTPAuth = true;
	$mail->Username = "autenticacao@meusite.com.br";
	$mail->Password = "minhasenha";

	$mail->From = "b2c@meusite.com.br";
	$mail->FromName = $de;
	$mail->AddAddress($para);	
	if ($bcc != NULL){
		$arrayBcc = explode(";",$bcc);
		foreach ($arrayBcc as $val){					
			$mail->AddBCC($val);
		}
	}

	if ($anexos != NULL){
		$arrayAnexos = explode(";",$anexos);
		foreach ($arrayAnexos as $foto){
			if (strpos($foto, 'Geral Hoteis/') > 0){
				$nomeImg = substr($foto, strpos($foto, 'Geral Hoteis/')+13);
			} else {
				$nomeImg = $foto;
			}
			$mail->AddEmbeddedImage("img/".$foto, $nomeImg, $foto);
		}
	}
	
	$mail->WordWrap = 50;
	$mail->IsHTML(true);
	$mail->Subject = $assunto;
	$mail->CharSet="UTF-8";
	$mail->Body = $corpo;
	$mail->AddStringAttachment($mpdf_anexo, 'voucher.pdf');
	$mail->Send();
	//$mail->AltBody = "Aqui vem um texto alternativo sem html";
	$index = new indexController();
	try{
		for ($i = 0; $i < 3; $i++) {
			if($mail->Send()) {
				$index->generateLog("E-mail encaminhado na tentativa n $i.; Destinatario: " . $para . ";Corpo e-mail: " . str_replace("\"", "'", strip_tags($corpo)));
				$i = 3;
				return true;
			} else {
				$index->generateLog("Erro durante a tentativa de envio de e-mail n $i.;Destinatario: " . $para . ";Erro(Not Exception): " . $mail->ErrorInfo . ";Corpo e-mail: " . str_replace("\"", "'", strip_tags($corpo)));
				if($i == 2) {
					return false;
				}
			}	
		}
	}catch (Exception $e){
		$index->generateLog("Erro durante envio de e-mail.;Destinatario: " . $para . ";Erro: " . $e->getMessage() . $assunto . ";Erro(Not Exception): " . $mail->ErrorInfo. ";Erro(Exception): " . $e->getMessage() . ";Corpo e-mail: " . str_replace("\"", "'", strip_tags($corpo)));
		return false;
	}
}

Mas não funcionou. A reserva é feita, mas o voucher não é enviado. Qual pode ter sido o erro?

Será que é a falta de um require_once que aponta pro arquivo mpdf.php?

 

Abraço,

Gustavo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.