Я отправляю электронное письмо с использованием функции почты PHP, но я хотел бы добавить указанный файл PDF в качестве прикрепленного файла к письму. Как мне это сделать?
Вот мой текущий код:
$to = "me@myemail.com"; $subject = "My message subject"; $message = "Hello,\n\nThis 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!";
Вы должны рассмотреть возможность использования почтовой библиотеки 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 . Это почти тривиально, чтобы делать привязанности к ним, и вы получаете FAR FAR FAR лучшую обратную связь в случае, если что-то взорвется, против простого истинного / ложного, что mail () снисходит, чтобы выплюнуть.
Чтобы устранить ошибки устаревания,
замещать
$ body = eregi_replace ("[]", '', $ body);
С
$ body = preg_replace ('/.([^.]*$)/ i', '', $ body);