0

我正在尝试使用 PHP 发送带有附件的电子邮件。我已经按照http://webcheatsheet.com/PHP/send_email_text_html_attachment.php#attachment上的优秀教程进行了以下更改:

--PHP-mixed-<?php echo $random_hash; ?>  
Content-Type: application/txt; name="<?php echo $_POST[log_file]?>"  
Content-Transfer-Encoding: base64  
Content-Disposition: attachment 

原始脚本或我修改后的脚本似乎都没有将任何文件附加到我的电子邮件中。任何人都知道我做错了什么。

注意:我附加到表单的文件都是文本文件(各种文件扩展名,例如 .log、.txt 等)。


好的,我现在已经证明我认为这个脚本的 MIME 编码部分不起作用。我在上传目录中放置了一个文本文件并将脚本更改为:

--PHP-mixed-<?php echo $random_hash; ?>   
Content-Type: text/plain; name="<?php echo $_SERVER['DOCUMENT_ROOT']. '/upload/test.txt' ?>" 
Content-Transfer-Encoding: base64  
Content-Disposition: attachment 

查看收据上的电子邮件来源时,我在 Content-Type 下看到完整路径和文档名称: text/plain; name=,但没有附件,编码或其他。

任何人都知道我如何让这个工作?

我尝试了以下方法:

--PHP-mixed-<?php echo $random_hash; ?>   
Content-Type: text/plain; name="<?php echo $_FILES['file']['name']; ?>"
Content-Transfer-Encoding: base64  
Content-Disposition: attachment

这显示了电子邮件源中的文件名,但没有附件,有趣的是:

--PHP-mixed-<?php echo $random_hash; ?>   
Content-Type: text/plain; name="<?php echo $_FILES['file']['temp_name']; ?>"
Content-Transfer-Encoding: base64  
Content-Disposition: attachment 

返回一个空文件名并且仍然没有附件,我只能假设在我执行此操作时临时文件已被删除?

4

1 回答 1

0

好的,最终通过将临时文件移动到我服务器上的另一个位置,然后对该文件进行编码来完成这项工作。

不知道为什么我不能在不保存临时文件的情况下对其进行编码,但至少我现在可以正常工作了。

感谢所有花时间回复此问题的人,您对我的帮助很大。

于 2013-07-25T10:19:51.413 回答