Как прикрепить PDF к электронной почте с помощью функции PHP mail
Я отправляю электронное письмо с помощью функции PHP mail, но я хотел бы добавить указанный PDF-файл в качестве вложения файла к электронной почте. Как мне это сделать?
вот мой текущий код:
$to = "me@myemail.com";
$subject = "My message subject";
$message = "Hello,nnThis is sending a text only email, but I would like to add a PDF attachment if possible.";
$from = "Jane Doe <janedoe@myemail.com>";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent!";
3 ответов
вы должны рассмотреть возможность использования почтовой библиотеки PHP, такой как PHPMailer что сделало бы процедуру отправки почты намного проще и лучше.
вот пример того, как использовать PHPMailer, это действительно просто!
<?php
require_once('../class.phpmailer.php');
$mail = new PHPMailer(); // defaults to using php "mail()"
$body = file_get_contents('contents.html');
$body = eregi_replace("[\]",'',$body);
$mail->AddReplyTo("name@yourdomain.com","First Last");
$mail->SetFrom('name@yourdomain.com', 'First Last');
$mail->AddReplyTo("name@yourdomain.com","First Last");
$address = "whoto@otherdomain.com";
$mail->AddAddress($address, "John Doe");
$mail->Subject = "PHPMailer Test Subject via mail(), basic";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$mail->AddAttachment("images/phpmailer.gif"); // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>
альтернативой PHPMailer являетсяhttp://swiftmailer.org/
простой ответ: Не делайте этого. создание электронной почты MIME вручную-болезненный бизнес и очень легко испортить.
вместо этого используйте PHPMailer или Swiftmailer. Это почти тривиально делать вложения с ними, и вы получаете гораздо лучшую обратную связь, если что-то взорвется, v. s. простой true / false, который mail () снисходит до выплевывания.
для устранения ошибок устаревания,
заменить
$body = eregi_replace("[\]",'',$body);
С
$body = preg_replace('/\.([^\.]*$)/i','',$body);