我正在尝试从php mail命令发送电子邮件。到目前为止,我已经能够尝试过,但似乎无法使用附件。我环顾网络,我发现的最好的代码让我想到了这个:
$fileatt_name = 'JuneFlyer.pdf';
$fileatt_type = 'application/pdf';
$fileatt = 'JuneFlyer.pdf';
$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
$data = chunk_split(base64_encode($data));
$MAEmail = "myemail@sbcglobal.net";
mail("$email_address", "$subject", "$message",
"From: ".$MAEmail."\n".
"MIME-Version: 1.0\n".
"Content-type: text/html; charset=iso-8859-1".
"--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name=\"{$fileatt_name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .$data. "\n\n" );
我这样做有两个问题。首先,电子邮件的内容消失了。
其次,附件出错。 “Adobe Reader无法打开June_flyer.pdf,因为它不是受支持的文件类型,或者因为文件已损坏(例如它是作为电子邮件附件发送而未正确解码)”
有关如何处理此问题的任何想法?
谢谢,
JB
答案 0 :(得分:4)
如何处理邮件和PHP的最好方法是使用可靠的经过良好测试的库 - 带附件的电子邮件很容易变得非常讨厌。我个人推荐SwiftMailer。
答案 1 :(得分:1)
可能是标题内的问题。如果你想学习困难的方法,那么弄清楚你如何配置带有标题的不同mimetypes并做这些事情。
或者简单的方法是使用PHPmailer或其他电子邮件库,它们将为您提供难点。
答案 2 :(得分:0)
了解发送附件的正确电子邮件格式的一个过程是尝试使用Thunderbird,Outlook等向自己发送电子邮件(带附件)。
然后查看该电子邮件的来源。尝试将该消息源复制并粘贴到您的PHP代码中(通过稍微修剪诸如To和From之类的标题以及mail()函数已经处理过的文件)和bada-bing,您就可以在您面前获得所需的一切。 / p>
您可以通过用您独特的块或变量替换块(HTML部分,文本部分,附件)来使其动态化。
然后不需要花哨的库。