Php 发送邮件大附件-ZF2

Php 发送邮件大附件-ZF2,php,email,zend-framework2,email-attachments,Php,Email,Zend Framework2,Email Attachments,当我从服务器发送附件大于2.5Mb的邮件时,我遇到了一个问题。发送带有较小附件的电子邮件是可行的,但一旦达到大约2或2.5Mb的临界大小,邮件就不再发送 创建PDF文件和合并的目标PDF没有问题,无论大小。但只有较小的PDF文件通过邮件发送。当附件太大时,甚至不会发送空邮件 过程如下: 1) php脚本创建几个PDF文件 2) 这些文件通过gs合并 $finCmd = 'gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile='.$p

当我从服务器发送附件大于2.5Mb的邮件时,我遇到了一个问题。发送带有较小附件的电子邮件是可行的,但一旦达到大约2或2.5Mb的临界大小,邮件就不再发送

创建PDF文件和合并的目标PDF没有问题,无论大小。但只有较小的PDF文件通过邮件发送。当附件太大时,甚至不会发送空邮件

过程如下:

1) php脚本创建几个PDF文件

2) 这些文件通过gs合并

    $finCmd = 'gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile='.$pathDest.$pdfFilename.' input1.pdf input2.pdf input3.pdf';

    // Create PDF
    $execResult = exec($finCmd);
3) 将创建电子邮件正文

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\u BASE64会发送邮件,但PDF文件已损坏。

问题似乎在于Mime编码

所有选项:

  • Zend_Mime::Encoding7bit:'7BIT'-->损坏的文件
  • Zend_Mime::ENCODING_8BIT:'8BIT';-->损坏的文件
  • Zend_Mime::ENCODING_QUOTEDPRINTABLE:“quoted printable”-->已损坏 文件
  • Zend_Mime::ENCODING_BASE64:'BASE64'-->文件未发送
不起作用。 使用PHPMailer开发了一个解决方案。
解决了。

问题似乎在于mime编码

所有选项:

  • Zend_Mime::Encoding7bit:'7BIT'-->损坏的文件
  • Zend_Mime::ENCODING_8BIT:'8BIT';-->损坏的文件
  • Zend_Mime::ENCODING_QUOTEDPRINTABLE:“quoted printable”-->已损坏 文件
  • Zend_Mime::ENCODING_BASE64:'BASE64'-->文件未发送
不起作用。 使用PHPMailer开发了一个解决方案。
已解决。

您是否尝试过使用Octetstream类型

$pdfAttach->type      = Mime::TYPE_OCTETSTREAM;
$pdfAttach->encoding   = Mime::ENCODING_BASE64;

你试过使用Octetstream类型吗

$pdfAttach->type      = Mime::TYPE_OCTETSTREAM;
$pdfAttach->encoding   = Mime::ENCODING_BASE64;

你确定生成的PDF实际上也很好吗?您是否生成并打开了一个?是的。我已经打开了生成的文件,它们是正确的。请看我的答案,而不是那些解码不正确的PDF。您确定生成的PDF实际上也很好吗?您是否生成并打开了一个?是的。我已经打开了生成的文件,它们是正确的。请看我的答案,而不是那个些解码错误的人。你们的解决方案实际上是正确的。谢谢你的提示。但我恢复了一个完全不同的问题:生成文件时数据库连接超时。当然,通过我的描述,这个问题是不可追溯的,这完全是一个noob问题。谢谢你的提示!你的解决方案实际上是正确的。谢谢你的提示。但我恢复了一个完全不同的问题:生成文件时数据库连接超时。当然,通过我的描述,这个问题是不可追溯的,这完全是一个noob问题。谢谢你的提示!