#php #email #attachment #phpmailer
#php #Адрес электронной почты #вложение #phpmailer
Вопрос:
Я пытался отправить электронное письмо с вложением в формате PDF. Я использую PHPMailer, но, похоже, не могу с этим справиться. Я пробовал множество различных методов добавления, а также пробовал разные пути к файлам. Вот код:
require_once ("class.phpmailer.php");
$lc_name = $_SESSION['lc_name'];
$filename = "email_attachment/".$lc_id.".pdf";
require_once ("func_ui.php");
$vou_mail = func_ui::select_mail($lc_id, 3);
if($vou_mail["auto"] == 0)
{
return;
}
else
{
$custom_body = $vou_mail["body"];
}
$body = "Dear customer,<br><br>
$custom_body<br><br>
Kind Regards,<br><br>
$gm_name<br>
Centre Manager";
$mail = new PHPMailer();
try {
$mail->IsSMTP();
$mail->Host = "****"; // SMTP server
$mail->SMTPAuth = true; // enable SMTP authentication
// $mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Port = ***; // set the SMTP port for the GMAIL server
$mail->Username = "******"; // GMAIL username
$mail->Password = "****"; // GMAIL password
$from_name = '***';
$subject = '';
//$mail->AddAttachment($filename, "", "base64", "application/pdf");
//$mail->AddAttachment(realpath('./email_attachment/1220.pdf'),'1220.pdf','base64', 'application/pdf');
$mail->SetFrom('info@***.com', "");
$mail->AddReplyTo("info@***.com", "");
$mail->Subject = "$lc_name - Voucher.";
//$mail->IsHTML(false);
$reason = $mail->addAttachment("/email_attachment/1220.pdf");
$mail->AltBody = "To view the message, please use an HTML compatible m_email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$mail->AddAddress($email_v, "");
if ($reason == false){
echo "Didn't like this linen";
}
else
{
echo "worked ?";
}
if(! $mail->Send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Message sent!";
}
$mailer->ClearAddresses();
$mailer->ClearAttachments();
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
Комментарии:
1. Вы также пробовали использовать абсолютный путь к файлу?
2. Что это такое? Я использую сервер на базе Linux. так должно ли это быть похоже на var/public_html/email_attachment/1220.pdf?
3. Абсолютный путь — это путь, начинающийся в корневом каталоге. В мире * nix это что-то вроде
/var/www/mysite.com/pdfs/mypdf.pdf
или в мире Win что-то вроде:C:wwwrootmysite.compdfsmypdf.pdf
Обратите внимание на начальную косую/
черту var в системах * nix.4. Пробовал прямо сейчас, но, похоже, не работает :/
Ответ №1:
Где у вас есть следующая строка:
$reason = $mail->addAttachment("/email_attachment/1220.pdf");
Попробуйте изменить это на:
$mail->addAttachment('/email_attachment/1220.pdf','1220.pdf');
У вас был путь к PDF-файлу, который вы хотели прикрепить, но вам также нужно снова указать его имя файла.
Я проверил это, экспериментируя с другими функциями PHPMailer