如何使用php将文档附加到电子邮件

时间:2016-03-14 21:56:58

标签: php email

我的网站目录中有一个文档,我希望在单击提交按钮时将其附加到电子邮件中,但是在解决此问题时遇到问题我无法理解如何在发生错误时执行此操作。这是我到目前为止所做的。

$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);
    }

2 个答案:

答案 0 :(得分:0)

使用课程PHPMailer,以便附加您需要发送的文件以及您需要的其他项目。

答案 1 :(得分:0)

使用php的原生mail函数,这是可行但非常难。 您需要自己实现邮件的多部分协议(需要指定其他标头并在正文中编码附件)。

以下是多部分邮件的外观示例(取自RFC

 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.

这意味着,您首先需要将特定的Content-Type标头传递给邮件,其中边界值指定邮件中所有部分之间的分隔符(通常您将有两部分:邮件的实际内容和附件)。

然后在邮件正文中,您需要一个包含所有这些部分的字符串,如上例所示。 如果你想附加二进制文件,事情会更复杂,因为那时你可能需要对这些二进制图像进行base64编码,并将使用过的编码添加到编码的部分标题中。

总结一下:如果你想要附件,不要使用php mail函数,而是使用像PHPMailer这样的工具,它们会更高级,更易于使用。 / p>