Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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
Faça o debug do PHPMailer para ver se algum erro é retornado.
O Email chega? Mesmo que sem anexo?
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();
[...]