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 curren
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/
To eliminate deprecation errors,
Replace
$body = eregi_replace("[\]",'',$body);
With
$body = preg_replace('/\.([^\.]*$)/i','',$body);
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.