我刚从服务器发送大于约2.5Mb附件的邮件时遇到了问题。发送包含较小附件的电子邮件可以正常工作,但是一旦达到大约2或2.5Mb的临界大小,邮件就不再发送了。
无论大小如何,PDF文件和合并的目标PDF都可以毫无问题地创建。但只有较小的PDF文件通过邮件发送。当附件太大时,甚至都不会发送空邮件。
该过程如下:
1)php脚本创建了几个PDF文件。
2)这些文件通过gs合并
ORDER BY
3)创建了电子邮件正文
$finCmd = 'gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile='.$pathDest.$pdfFilename.' input1.pdf input2.pdf input3.pdf';
// Create PDF
$execResult = exec($finCmd);
4)电子邮件发送时间:
protected function setBodyHtmlpart($content, $pdfFilepath = null, $pdfFilename = null) {
$content="<p><span style='font-size:10.0pt;font-family:\"Arial\",\"sans-serif\";color:black;'>".$content.'</span></p>';
$html = new MimePart($content.$this->getSignature());
$html->type = "text/html";
$body = new MimeMessage();
if ($pdfFilename != '') {
$pdfAttach = new MimePart(file_get_contents($pdfFilepath.$pdfFilename));
$pdfAttach->type = 'application/pdf';
$pdfAttach->filename = $pdfFilename;
$pdfAttach->encoding = \Zend\Mime\Mime::ENCODING_BASE64;
$pdfAttach->disposition = \Zend\Mime\Mime::DISPOSITION_ATTACHMENT;
$body->setParts(array($html, $pdfAttach));
} else {
$body->setParts(array($html));
}
return $body;
}
欢迎任何提示,因为我完全迷失了。
我认为可能存在种族问题:exec尚未完成,但脚本已经尝试发送邮件并取消。但我至少会收到一封空邮件。
编辑: 然后更改Mime \ Mime :: ENCODING_BASE64发送邮件,但PDF文件已损坏。
答案 0 :(得分:0)
似乎问题是mime编码。
所有选项:
没用。 使用PHPMailer开发了一个解决方案。 工作了。
答案 1 :(得分:0)
您是否尝试过使用Octetstream类型
$pdfAttach->type = Mime::TYPE_OCTETSTREAM;
$pdfAttach->encoding = Mime::ENCODING_BASE64;