制作一个PHP脚本,该脚本也包含一个文本文件作为附件。当我发送到一个GMAIL地址时,它是完美的,但是当我发送到另一个网络主机的地址时,我可以看到文件是附加的,但是当我打开它时,文件是空的(没有内容)...什么会导致这种情况??这是我使用的代码:
$filename = basename($dirfilename);
$body = "File is included in mail";
$path = "downloads/";
$file = $path.$filename;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$eol = PHP_EOL;
// Headers
$header = "From: ".$from_name." <".$from_mail.">".$eol;
$header .= "Reply-To: ".$replyto.$eol;
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"";
// Message
$message = "--".$uid.$eol;
$message .= "Content-Type: text/html; charset=UTF-8".$eol;
$message .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
$message .= $body.$eol;
$message .= "--".$uid.$eol;
$message .= "Content-Type: text/plain; name=\"".$filename."\"".$eol;
$message .= "Content-Transfer-Encoding: base64".$eol;
$message .= "Content-Disposition: attachment;\r\n filename*=utf-8''" . rawurlencode($filename).$eol;
$message .= $content.$eol;
$message .= "--".$uid."--";
if (mail($mail_to, $subject, $message, $header))
{
echo "File sent";
} else {
echo "Fail";
}
如果你看一封原始邮件:
--_004_8b72e1a6b3f242208a89b3fa9240bcf3avode_
Content-Type: application/pdf; name="TA1_031_21204-2.pdf"
Content-Description: TA1_031_20181204-2.pdf
Content-Disposition: attachment; filename="TA1_031_21204-2.pdf";
size=230847; creation-date="Mon, 10 Dec 2018 11:33:32 GMT";
modification-date="Mon, 10 Dec 2018 09:44:35 GMT"
Content-Transfer-Encoding: base64
JVBERi0xLjUNJeLjz9MNCjI4MDYgMCBvYmoNPDwvTGluZWFyaXplZCAxL0wgMjMwODQ3L08gMjgw
OC9FIDMzOTcvTiAyOC9UIDIzMDE2NS9IIFsgNDY3IDM0NF0+Pg1lbmRvYmoNICAgICAgICAgICAg
DQoyODEyIDAgb2JqDTw8L0RlY29kZVBhcm1zPDwvQ29sdW1ucyA0L1ByZWRpY3RvciAxMj4+L0Zp
bHRlci9GbGF0ZURlY29kZS9JRFs8MDU4QTRCNjk5OEFDNzE0M0JCRUZEMDFENjJCOEE5ODg+PDZG
Q0FDM0U1RTAyOTNDNDU5QzE2MkQzMTczMjM5RTYyPl0vSW5kZXhbMjgwNiAxM10vSW5mbyAyODA1
顺便说一句,你正在写你的电子邮件
$message .= "Content-Disposition: attachment;\r\n filename*=utf-8''" . rawurlencode($filename).$eol;
您正在文件内容前面添加不必要的“\r\n”和$eol。
尝试类似的东西:
$message .= 'Content-Disposition: attachment; filename=". rawurlencode($filename).";'.$eol.$eol;
但这将由PHPMailer自动完成。
问题内容: 我遇到了一个问题:直到今天,我使用包含以下内容的标头使用PHP发送HTML邮件 现在,我添加了添加附件的功能。为此,我不得不将此行更改为 现在,使用,邮件的其余部分(即普通文本)将显示为文本/纯文本。我怎么能知道附件有效并且邮件文本仍然是HTML? 问题答案: 要发送带有附件的电子邮件,我们需要使用multipart / mixed MIME类型,该类型指定混合类型将包含在电子邮件中。
问题内容: 我似乎找不到我编写的应该发送带有附件的电子邮件的php函数的问题。我已经为此苦苦挣扎了一段时间了。 编辑 问题是邮件的消息与文件混合在一起并作为附件发送。 问题答案: Artefacto让我更加关注输出,并且找到了解决方法:
我一直在使用此脚本向某些员工发送电子邮件,但由于我的系统发生了更改,我现在必须随电子邮件发送附件,我尝试了多个代码来完成此任务,但都没有成功。。。我仍然收到电子邮件,但没有附件,这在这种情况下是毫无意义的,我已经把我正在使用的脚本放在下面 我已经删除了我使用的真实地址和smtp服务器 我也尝试了一些其他的emtods附加的文件,但似乎没有工作任何帮助是大大的
尝试发送带有pdf附件的电子邮件,尝试使用swickmailer,但没有成功,此代码使用zip但不使用PDF:( 邮件被发送罚款,我得到的邮件:但附件是不存在的,在meial有所有的bas64编码在电子邮件像: onatatent-Type: Application/octet-stream; name="media.pdf"Content-transver-Encode: base 64 Con
我目前的邮件有问题。它发送的很好,我收到了一个带有名称和大小的附件,但无法打开。另外,我已经尝试了PHPMailer,SMTP在我的服务器上不起作用,所以请不要建议我使用它:) 抱歉关于法语变量名称和错误消息,但我不认为这将是有用的。当然,如果你需要,我可以翻译。 这是一段处理我附件的代码。
AIR Native Extension:可以在Flash中指定附件路径进行发送 [Code4App.com]