GRo*_*ton 0 email amazon-web-services amazon-ses
我们有一个基于PHP的应用程序(在t2.medium实例上运行),该应用程序通过SES发送电子邮件(仅向选择加入的用户),并且都位于同一区域。该应用程序于今年早些时候启动,电子邮件发送正常工作了几个月。我们最近切换到通过mailgun发送(这样我们就可以获得有关遇到的问题的更多信息),但是我们没有更改任何SES设置。(注意:我们的帐户已获准每小时发送5万封电子邮件-我们正尝试发送数百封电子邮件。)
我为我们的应用程序编写了一个辅助实用程序,该实用程序还发送电子邮件,因此我决定继续对该实用程序使用SES。下面是该代码的简化版本。请注意,我使该测试程序的布局尽可能接近实际的实用程序(并且很明显,该实用程序会进行数据库调用等)。
<?php
require_once dirname(__FILE__) . '/PHPMailer-master/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'email-smtp.us-west-2.amazonaws.com';
$mail->SMTPAuth = true;
$mail->Username = 'my_user_name';
$mail->Password = 'my_password';
$mail->SMTPSecure = 'tls';
$mail->From = 'from_sender';
$mail->FromName = 'WebTeam';
$mail->IsHTML(true);
$oldt = microtime(true);
while(true) {
$first_name = 'first_name';
$email = 'to_recipient';
$strCnt = 'many';
$subject = "Lots of great new things to buy";
$body = "<p>" . $first_name . ",</p>";
$body = $body . "<p>You have ' . $strCnt . ' new things to buy waiting for you. Don't let them slip by! ";
$body = $body . "Click <a href='http://fake_url.com'>here</a> to see them!</p>";
$body = $body . "<p>The Web Team</p>";
$mail->addAddress($email);
$mail->Subject = $subject;
$mail->Body = $body;
$newt = microtime(true);
echo 'email build done: ' . $newt - $oldt . PHP_EOL;
$oldt = $newt;
if(!$mail->send(true)) {
echo 'error sending email: ' . $mail->ErrorInfo . PHP_EOL;
} else {
$newt = microtime(true);
echo 'email sent: ' . $newt - $oldt . PHP_EOL . PHP_EOL;
$oldt = $newt;
}
$mail->ClearAllRecipients(); // added line
}
?>
Run Code Online (Sandbox Code Playgroud)
非常简单!
但是,这是磨擦。第一次运行时,第一封电子邮件用了不到一秒钟的时间发送,第二封电子邮件用了31秒,而第三封电子邮件则需要191秒。然后,我又添加了一行代码,并再次运行了该程序。这次,第一封电子邮件花了63秒发送。大约20分钟后,我第三次运行了程序。这次,前三封电子邮件的发送时间不到一秒钟,而第四封电子邮件则花费了191秒。然后,我第五次运行它,第一封电子邮件花了135秒发送。(请注意,已收到所有电子邮件。)
到底他妈发生了什么?更重要的是,我该如何解决该问题?
这并不是SES运行缓慢。这是对EC2本身的有据可查的故意限制,有两种可能的解决方法。
从SES文档中:
重要
默认情况下,Amazon Elastic Compute Cloud(Amazon EC2)限制通过端口25的电子邮件流量。为了避免从EC2通过SMTP端点发送电子邮件时超时,请使用其他端口(587或2587),或填写“删除电子邮件发送限制的请求”以删除限制。
http://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-connect.html
| 归档时间: |
|
| 查看次数: |
2159 次 |
| 最近记录: |