【发布时间】:2014-12-08 15:06:48
【问题描述】:
我尝试使用一些代码从我的 ASP.NET MVC 5 网站发送电子邮件。从我读过的内容来看,我这样做是正确的,并且代码是正确的
public static Task SendEmailAsync(IEnumerable<string> to,
IEnumerable<string> cc, string body)
{
if (to == null || to.Count() == 0)
return null;
if (String.IsNullOrEmpty(body))
throw new ArgumentNullException("body of the email is empty");
// Send email.
return Task.Factory.StartNew(() =>
{
// Client setup.
using (SmtpClient smtpClient = new SmtpClient("smtp.servername.com", 25)) // Tried 587 too.
{
smtpClient.Credentials = new System.Net.NetworkCredential()
{
UserName = Constants.AdminEmailAddress,
Password = Constants.AdminPwd
};
smtpClient.UseDefaultCredentials = true;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = true;
// Mail message.
using (MailMessage mail = new MailMessage())
{
mail.Body = body;
mail.From = new MailAddress(Constants.AdminEmailAddress, "Business Name Here");
foreach (var a in to)
mail.To.Add(new MailAddress(a));
if (cc != null)
foreach (var a in cc)
mail.CC.Add(new MailAddress(a));
smtpClient.Send(mail); // Here I get exception.
}
}
});
}
但是在上面标记的那一行我得到了
System.Net.Mail.SmtpException: Unable to connect to the remote server 连接尝试失败,因为连接的一方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应 NNN.NNN .NNN.NNN:嗯
我明白这清楚地表明客户端无法连接,但这些细节与我用来从 Microsoft Outlook 发送电子邮件的细节完全相同,并且有效。
为什么我无法使用这些凭据连接到邮件服务器,我错过了什么?
我知道我可能需要联系邮件服务提供商并请求许可,但这是我第一次尝试此操作,我想澄清一下该怎么做。我查看了提供邮件服务的 mandrillapp.com,这是一个不错的选择,有人可以建议吗?
感谢您的宝贵时间。
注意,我已阅读
- How to send email from Asp.net Mvc-3?
- http://www.c-sharpcorner.com/UploadFile/sourabh_mishra1/sending-an-e-mail-using-Asp-Net-mvc/
- send email from MVC 4 ASP.NET app
更新
按照下面@Dave Zych 的非常有用的建议,我删除了SmtpException,但我现在有System.Security.Authentication.AuthenticationException 说“根据验证程序,远程证书无效。”。所以我在同一条船上,仍然无法发送电子邮件。
【问题讨论】:
-
关于远程证书,它是否作为可信证书添加到您的计算机中?
-
不,我对此完全陌生,所以我不知道要求以及如何执行此操作。我在哪里可以获得证书?我确信一旦获得证书,我就可以确定如何添加它...感谢您的评论。
标签: c# asp.net-mvc email asp.net-mvc-5