如何发送带附件的HTML电子邮件?

时间:2012-11-17 08:41:04

标签: php email-attachments

我正在使用此代码发送电子邮件:

$email="abc@gmail.com";
$to = $email;
$subject = "Test mail";
$message1 = '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head></head>
  <body>
    <div  style="width:80%;">
      <table style="margin: 10px 20px 10px 20px;">
        <tr><td>Hello!'."  ".'</td></tr>';
        $message1.=$mailmessage;
        $message1.=
          '<tr><td>Please find attachments for dailyreport.</td></tr>
<tr><td><br>' . "Thanks and Regards with ". '</td></tr>
    </table></div>
  </body>
</html>';
$from = "admin@feed.com";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= 'From: ' . $from . "\r\n";  
if(mail($to,$subject,$message1,$headers)) {
  "mail sent";
} else {
  "email does not exist";
}

要发送附件,我需要将内容类型更改为Content-Type: multipart/mixed;\n。但HTML上下文将会改变。如何将文件附加到此HTML?

3 个答案:

答案 0 :(得分:1)

如果您想编写自己的脚本,请结帐this link

但我强烈建议您使用自定义库,例如PHPMailer http://code.google.com/a/apache-extras.org/p/phpmailer/

  

PHPMailer是一个PHP电子邮件传输类,包含文件附件,SMTP服务器,CC,BCC,HTML消息,自动换行等。通过sendmail,PHP mail(),QMail或直接通过SMTP发送电子邮件。将支持其他传输,如SMS,MMS即将推出

答案 1 :(得分:0)

您应该尝试使用此代码来获取标题信息

$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\""; 

答案 2 :(得分:0)

你有一些特殊的电子邮件附件标题,不要担心我们有一个名为sendMail的php类,下载并学习@ PHP sendMail class