我的應用程序使用企業SMTP服務器,電子郵件大小限制爲20mb。我的電子郵件失敗,錯誤爲「[SocketException] SMTP錯誤:552 4.3.1消息大小超過固定的最大消息大小」,當附件總計14.92mb。在CakePHP中獲取電子郵件大小
目前我的代碼循環遍歷附加文件,並使用PHP filesize()對文件大小進行統計,然後將其與20mb的硬編碼限制進行比較。它應該運行單獨的代碼來告訴用戶文件是否太大,但是,在上面的例子中,它仍然小於極限,而是產生了一個醜陋的錯誤。
有沒有一種方法可以測量電子郵件,附件和所有的總大小?企業短信團隊正在推回說,電子郵件必須超過20MB,我想對此進行適當的測試。
我正在使用CakePHP 2.3的EmailComponent。下面是代碼的簡化版本:
App::uses('CakeEmail', 'Network/Email');
$email = new CakeEmail('smtp');
...
$totalAttachmentsSize = 0;
$attachments = array();
//loop array with files to be attached
foreach ($files as $file) {
$totalAttachmentsSize += filesize($file['path']);
$attachments[$file['name']] = $file['path'];
}
//compare attachments size to constant defined in bootstrap.php
if ($totalAttachmentsSize < MAX_EMAIL_SIZE) {
$email->send();
}
else {
//handle
}
謝謝,這很完美。事實上,我的14.92mb電子郵件是以超過20mb的頭髮出現的。 對於未來的讀者,請記住在檢查文件大小後將傳輸設置回SMTP :-)我使用$ email-> config('transport')執行此操作; – gazareth