发送邮件大附件 - ZF2

时间:2016-11-09 08:53:55

标签: php email zend-framework2 email-attachments

我刚从服务器发送大于约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文件已损坏。

2 个答案:

答案 0 :(得分:0)

似乎问题是mime编码。

所有选项:

  • Zend_Mime :: ENCODING_7BIT:&#39; 7bit&#39; - &GT;损坏的文件
  • Zend_Mime :: ENCODING_8BIT:&#39; 8bit&#39 ;; - &GT;损坏的文件
  • Zend_Mime :: ENCODING_QUOTEDPRINTABLE:&#39; quoted-printable&#39; - &GT;损坏 档案
  • Zend_Mime :: ENCODING_BASE64:&#39; base64&#39; - &GT;文件不发送

没用。 使用PHPMailer开发了一个解决方案。 工作了。

答案 1 :(得分:0)

您是否尝试过使用Octetstream类型

$pdfAttach->type      = Mime::TYPE_OCTETSTREAM;
$pdfAttach->encoding   = Mime::ENCODING_BASE64;
相关问题