如何使用php将文档附加到电子邮件
我的网站目录中有一个文档,我想在单击“提交”按钮时将其附加到电子邮件中,但在使其正常工作时遇到问题,我不太明白如何在不出错的情况下执行此操作。这就是我目前所拥有的如何使用php将文档附加到电子邮件,php,email,Php,Email,我的网站目录中有一个文档,我想在单击“提交”按钮时将其附加到电子邮件中,但在使其正常工作时遇到问题,我不太明白如何在不出错的情况下执行此操作。这就是我目前所拥有的 $message = "Body Test"; $attachment = $myFile=fopen("DATA/EmailDoc.txt","r") or exit("Can't open file!"); fclose($myFile); if (isset($_POST['submit'])){ mai
$message = "Body Test";
$attachment = $myFile=fopen("DATA/EmailDoc.txt","r") or exit("Can't open file!"); fclose($myFile);
if (isset($_POST['submit'])){
mail('sulmaxcp@gmail.com', 'Subject Test', $message);
}
使用类,以便可以附加需要发送的文件和其他需要的项目。使用php的原生
邮件功能,这是可行的,但非常困难。
您需要自己实现mail的多部分协议(需要指定额外的头并在正文中对附件进行编码)
下面是一个多部分邮件的外观示例(摘自)
发件人:Nathaniel Borenstein
致:内德·弗里德
主题:示例消息
MIME版本:1.0
内容类型:多部分/混合;boundary=“简单
边界“
这是序言。这是可以忽略的,尽管它
是一个方便的地方,邮件编写者可以将
非MIME兼容读者的解释性说明。
--简单边界
这是隐式类型的纯ASCII文本。
它不会以换行符结束。
--简单边界
内容类型:文本/纯文本;字符集=美国ascii码
这是显式键入的纯ASCII文本。
它以换行符结束。
--简单边界--
这是结束语。这也是不容忽视的。
这意味着,您首先需要将特定的内容类型头传递给邮件,其中边界值指定邮件中所有部分之间的分隔符(通常有两部分:邮件的实际内容和附件)
然后在邮件正文中,您需要一个包含所有这些部分的字符串,如上面的示例所示。
如果您想附加二进制文件,事情会更加复杂,因为您可能需要对这些二进制图像进行base64编码,并将使用的编码添加到已编码的零件头中
总而言之:如果你想要附件,不要使用phpmail
函数,而是使用类似的工具,这将更高级、更简单。可能重复的
From: Nathaniel Borenstein <nsb@bellcore.com>
To: Ned Freed <ned@innosoft.com>
Subject: Sample message
MIME-Version: 1.0
Content-type: multipart/mixed; boundary="simple
boundary"
This is the preamble. It is to be ignored, though it
is a handy place for mail composers to include an
explanatory note to non-MIME compliant readers.
--simple boundary
This is implicitly typed plain ASCII text.
It does NOT end with a linebreak.
--simple boundary
Content-type: text/plain; charset=us-ascii
This is explicitly typed plain ASCII text.
It DOES end with a linebreak.
--simple boundary--
This is the epilogue. It is also to be ignored.