2017-09-22 79 views
1

我正在尝试向我的客户发送2K封电子邮件。我正在使用Amazon SES通过this库发送电子邮件。当我尝试使用附件发送电子邮件时,出现SimpleEmailService::sendEmail(): 35 Process open FD table is full错误。我只是按照自述文件中给出的指示进行操作。仅更改凭据。任何帮助将不胜感激... :)FD表使用SES发送电子邮件时发生完整错误

编辑

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

附件是PDF类型。

编辑2

服务团队说,你是不是在发送邮件后关闭文件描述符。作业完成后,您需要关闭文件描述符。这样它不会用尽分配FD的数量的限制

这是我正在尝试的代码。

$mails = [ 
'[email protected]' 
... 
... 
... 
]; 

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

foreach ($mails as $email) { 
    try { 
     $m->setFrom('From <[email protected]>'); 
     $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(); 
    } 
} 
+0

*“服务团队说你发送邮件后没有关闭文件描述符。”*可能。您是否向每个收件人发送相同的PDF文件,或者您是单独生成它们并将它们邮寄到一个循环中?显示一些代码? –

+0

@ Michael-sqlbot更新了问题 – Curious

回答

1

解决

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

相关问题