How to attach PDF to email using PHP mail function

拟墨画扇 提交于 2019-11-29 02:47:57

问题


I am sending an email using PHP mail function, but I would like to add a specified PDF file as a file attachment to the email. How would I do that?

Here is my current code:

$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!";

回答1:


You should consider using a PHP mail library such as PHPMailer which would make the procedure to send mail much simpler and better.

Here's an example of how to use PHPMailer, it's really simple!

<?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!";
}

?>

An alternative to PHPMailer is http://swiftmailer.org/




回答2:


Simple answer: Don't do it. building a MIME email by hand is a painful business, and VERY easy to screw up.

Instead, use PHPMailer or Swiftmailer. It's almost trivial to do attachments with them, and you get FAR FAR FAR better feedback in case something does blow up, v.s. the simple true/false that mail() condescends to spit out.




回答3:


To eliminate deprecation errors,

Replace

$body             = eregi_replace("[\]",'',$body);

With

$body             = preg_replace('/\.([^\.]*$)/i','',$body);


来源:https://stackoverflow.com/questions/10606558/how-to-attach-pdf-to-email-using-php-mail-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!