添付ファイルが2.5Mbを超えるメールをサーバーから送信すると、問題が発生しました。より小さい添付ファイルでメールを送信することはできますが、クリティカルサイズが約2〜2.5Mbに達するとすぐにメールは送信されません。メールの添付ファイルが大きい - ZF2
PDFファイルとマージされたターゲットPDFは、サイズに関係なく問題なく作成されます。しかし、小さいPDFファイルだけがメールで送信されます。添付ファイルが大きすぎると、空のメールも送信されません。
プロセスは、以下である:
1)PHPのスクリプトは、複数のPDFファイルを作成します。
protected function send($fromAddress, $fromName, $toAddress, $toName, $subject, $bodyParts)
{
// setup SMTP options
$options = new SmtpOptions(array(
'name' => 'XServer',
'host' => 'xServer',
'port' => 25,
'connection_class' => 'plain',
'connection_config' => array(
'username' => 'Xusername',
'password' => 'Xpassword',
),
));
$mail = new Message();
$mail->setBody($bodyParts);
$mail->setFrom($fromAddress, $fromName);
$mail->setTo($toAddress, $toName);
$mail->setSubject($subject);
$transport = new SmtpTransport($options);
$transport->send($mail);
}
任意のヒント:
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_BASE64を変更すると、メールが配信されますが、PDFファイルが破損しています。
を使用してみましたが、あなたは、生成されたPDFがあまりにも実際に罰金ですか? 1つを生成してオープンしましたか? – Andrew
はい。私は、生成されたファイルを開いて、彼らは正しいと思った。間違ったデコードをした人の代わりに、私の答えを見てください。 –