如何使用PHP向邮件添加附件?

时间:2013-10-25 13:11:30

标签: php forms email

我有一个表单,允许用户提交支持请求。该表单还允许用户发送附件(jpeg / pdf等..)

表单一旦提交,它就会向用户发送一封确认电子邮件,说明他们的请求,但也会将另一封确认信息发送给basecamp(项目管理软件),并在其中记录此请求。

basecamp的电子邮件应分为两部分;内容转到一封电子邮件,附件转到另一封电子邮件。

像(只是一个基本的例子):

$email_A = "project1@live.com";
$subject_A = "Todo:";
$message_A = "* Milk
              * Bread";

$email_B = "project-image@live.com";
$subject_B = "Files";
$message_B = "";

mail($email_A, $subject_A, $message_A);
mail($email_B, $subject_B, $message_B);

如何将用户在表单中上传的文件附加到上述邮件($ message_B),以便将其通过电子邮件发送到basecamp?它在basecamp中说要通过电子邮件附加文件,你需要做的就是将主题作为“文件”并将附件插入电子邮件正文中?

1 个答案:

答案 0 :(得分:1)

如果你想要它......

$boundary = md5(uniqid(rand()));
$headers = "From: webmaster@site.com\r\n"
    ."Mime: 1.0\r\n"
    ."Content-Type: multipart/mixed;boundary=\"".$boundary."\"\r\n";

$body = "--".$boundary."\r\n"
    ."Content-Type: text/html;charset=\"UTF8\"\r\n"
    ."Content-Transfer-Encoding: base64\r\n\r\n"
    .chunk_split(base64_encode($text))."\r\n\r\n"
    // second part of mail - attachment
    ."--".$boundary."\r\n"
    ."Content-Type: image/jpeg\r\n"
    ."Content-Transfer-Encoding: base64\r\n"
    ."Content-Description: imageXXX.jpg\r\n"
    ."Content-Disposition: attachment; filename=\"imageXXX.jpg\"\r\n"
    .chunk_split(base64_encode(file_get_contents('http://images6.fanpop.com/image/photos/34600000/Beautiful-Red-Roses-roses-34610966-1920-1080.jpg')))."\r\n\r\n"
    ."--".$boundary."--\r\n";

mail($to, $subj, $body, $headers);  

我想你会明白我的观点。