使用SES发送电子邮件时FD表是完整错误

时间:2017-09-22 11:09:33

标签: php email amazon-ses

我试图向客户发送2K电子邮件。我使用Amazon SES使用this库发送电子邮件。当我尝试使用附件发送电子邮件时,我收到SimpleEmailService::sendEmail(): 35 Process open FD table is full错误。我只是按照自述文件中的说明进行操作。并且只更改了凭据。任何帮助将不胜感激...... :)

修改

近900封电子邮件已成功发送附件。但在那之后,它开始抛出错误。

附件的类型为PDF。

修改2

  

服务团队表示您在发送邮件后没有关闭文件描述符。您需要在作业完成后关闭文件描述符。这样它就不会用尽所分配的FD数量限制

以下是我尝试的代码。

$mails = [
'customer@email.com'
...
...
...
];

$ses = new SimpleEmailService('XXXXXXX', 'XXXXXXX');
$ses->enableVerifyPeer(false);
$m = new SimpleEmailServiceMessage();

foreach ($mails as $email) {
    try {
        $m->setFrom('From <example@email.com>');
        $m->setSubject('Subject');
        $m->setMessageFromString('','<p>This is the test email.</p>');
        $m->addTo($email);
        $atch = path to pdf;
        $mime_type = @mime_content_type($atch);
        $tmp = str_replace('\\','/', $atch);
        $file_name = basename($tmp);
        $m->addAttachmentFromFile($file_name, $atch, $mime_type);
        $response = $ses->sendEmail($m,false,true);
        $m->clearRecipients();
        $m->attachments = [];
    } catch (Exception $ex) {
        echo $ex->getMessage();
    }
}

1 个答案:

答案 0 :(得分:1)

<强>解决

$ses->setBulkMode(true);之后添加了$ses->enableVerifyPeer(false);。 ..:)