我制作了一个Razor MVC3网站,我可以从中发送电子邮件。
我提供了一个获取所有用户和电子邮件信息的服务,并启动了一个发送格式化电子邮件的线程 我做了自己的线程池。
在我的电脑上,一切都很完美。我每秒发送一封电子邮件 但是当我在我的亚马逊服务器ec2上部署我的网站时,电子邮件发送速度变慢(3分钟/邮件)并且我的电子邮件丢失了一半。
亚马逊服务器比我的电脑强大得多。带宽相同。 我不知道它是IIS还是线程配置,而不是我错过了。
有什么想法吗?
// -----------------代码发送电子邮件------------------------ < / p>
using (SmtpClient smtp = new SmtpClient()
{
Host = serverSMTP,
Port = 25,
EnableSsl = false,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(senderAddress.Address, carteiraPassword),
Timeout = 10000
})
{
ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; }; //test
smtp.Send(message);
}
// ----------------- class thread ------------------------
public class MyThread
{
#region Param
public string Id { get; set; }
public RunNewThread RunThreadDelegate;
private System.Threading.Thread Thread { get; set; }
#endregion
public SiscobThread(RunNewThread RunThreadDelegate)
{
this.RunThreadDelegate = RunThreadDelegate;
}
public void Init()
{
this.Thread = new System.Threading.Thread(this.RunThread);
MsgManager.Instance.SendError("Thread born " + this.Id, null);
}
private void RunThread()
{
this.RunThreadDelegate();
}
public void Start()
{
this.Thread.Start();
}
public void Stop()
{
this.Thread.Abort();
}
}
答案 0 :(得分:3)
查看亚马逊。我很确定他们会限制出站电子邮件连接,除非您填写表格,说明申请中电子邮件的目的。
这是为了让垃圾邮件发送者更难以简单地启动新实例并播放他们的垃圾。
我看得更近了一点:
http://aws.amazon.com/ec2/faqs/#Are_there_any_limitations_in_sending_email_from_EC2_instances
每个亚马逊:
是。为了保持EC2地址的发送质量 电子邮件,我们对可以发送的电子邮件数量实施默认限制 从EC2帐户发送。如果您希望发送大量电子邮件 从EC2,您可以申请从您的帐户中删除这些限制 filling out this form。
答案 1 :(得分:0)
谢谢你。我在当天结束时收到:
亲爱的EC2客户,您最近达到了电子邮件数量的限制 您可以在实例上发送SMTP端口25:
实例ID:xxxxxxxx * IP地址:xxxxxxxx *开始日期:xxxxxxxx
为了保持发送电子邮件的EC2地址的质量, 我们对可以发送的电子邮件数量实施默认限制 EC2帐户。如果您希望从EC2发送大量电子邮件, 您可以申请将这些限制从您的帐户中删除 填写我们的在线申请表。
如果您不知道您的实例已发送电子邮件,我们建议您 检查您的实例应用程序以确认此活动 是有意的。您有责任确保您的实例 并保护所有应用程序免遭未经授权的使用对于 有关保护实例的建议,请访问aws.amazon.com/security。
问候,您的Amazon Web Services EC2团队