我在Console App Visual Studio 2012中使用以下代码发送消息。 出于某种原因,当我从我的Exchange服务器帐户发送邮件时,我只能在运行应用程序时一次发送5封邮件。
但是,如果我从免费的outlook.com
网络帐户发送,那么我可以一次发送所有10条消息。我不确定这是否是服务器配置问题。
代码段:
public static void SendMail(string recipientEmail, string subject, string body)
{
using (MailMessage mailMessage = new MailMessage())
{
try
{
mailMessage.From = new MailAddress(ConfigurationManager.AppSettings["MailFrom"]);
mailMessage.Subject = subject;
mailMessage.Body = body;
mailMessage.IsBodyHtml = true;
mailMessage.To.Add(new MailAddress(recipientEmail));
SmtpClient smtp = new SmtpClient();
smtp.Host = ConfigurationManager.AppSettings["MailHost"];
smtp.EnableSsl = Convert.ToBoolean(ConfigurationManager.AppSettings["MailEnableSsl"]);
System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
NetworkCred.UserName = ConfigurationManager.AppSettings["MailUserName"];
NetworkCred.Password = ConfigurationManager.AppSettings["MailPassword"];
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = int.Parse(ConfigurationManager.AppSettings["MailPort"]);
smtp.Send(mailMessage);
}
catch (MailException ex)
{
throw ex;
}
catch (Exception ex)
{
throw new MailException("Email sending failed", ex);
}
}
}
在App Config文件中:
<add key="MailHost" value="Mail.myMail.com"/>
<add key="MailEnableSsl" value="true"/>
<add key="MailFrom" value="myEmailAddress"/>
<add key="MailUserName" value="MyUserName"/>
<add key="MailPassword" value="MyPassword"/>
<add key="MailPort" value="587"/>
<add key="MailTemplatePath" value="X:\MyFolder\email.html"/>
<add key="MailSubject" value="MyEmail Subject"/>
答案 0 :(得分:1)
您是否尝试在循环中发送10条消息?或者您是否尝试一次将其发送给10个收件人?这听起来像是一个速率限制,您在使用公司Exchange或免费的Outlook.com帐户时会收到这些限制。
我会使用专为更高吞吐量设计的SMTP服务来测试它,例如Rackspace Mailgun(http://www.mailgun.com/)。您可以免费发送10,000条消息。我将它用于我的所有联系表格以及通知,新闻通讯等。可传递性也好得多。我注册并只交换SMTP凭据。