0

我正在尝试从 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

4

3 回答 3

4

处理邮件和 php 的最佳方法是使用经过良好测试的可靠库 - 带有附件的电子邮件很容易变得非常讨厌。我个人推荐SwiftMailer

于 2010-05-12T03:06:17.313 回答
1

可能是标题内的问题。如果您想学习困难的方法,那么请弄清楚如何使用标头配置不同的 mimetype 并做这些事情。

或者简单的方法是使用PHPmailer或其他电子邮件库,它们将为您完成最困难的部分。

于 2010-05-12T07:41:59.480 回答
0

学习发送附件的正确电子邮件格式的一个过程是尝试使用 Thunderbird、Outlook 等向自己发送一封电子邮件(带附件)。

然后查看该电子邮件的来源。尝试将该消息源复制并粘贴到您的 PHP 代码中(稍微修剪一下邮件()函数已经处理的 To 和 From 和 Subject 等标题)和 bada-bing,您需要的一切就在您面前。

您可以通过用您独特的块或变量替换内容块(HTML 部分、文本部分、附件)来使其动态化。

然后不需要花哨的库。

于 2013-07-24T16:55:02.560 回答