2017-09-22 84 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);。 .. :)

相關問題