当我在localhost上本地运行我的应用程序时,电子邮件成功发送,没有例外。但是当我发布应用程序并尝试重新创建电子邮件时,它不会发送电子邮件,也不会发送带有相应错误的视图。
try
{
using (var mail = new MailMessage())
{
const string email = "*******@gmail.com";
const string password = "*********";
var loginInfo = new NetworkCredential(email, password);
mail.From = new MailAddress("*******@gmail.com");
mail.To.Add(new MailAddress("email@email.com"));
mail.Subject = subject;
mail.Body = body;
mail.IsBodyHtml = true;
try
{
using (var smtpClient = new SmtpClient("smtp.gmail.com", 587))
{
smtpClient.EnableSsl = true;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = loginInfo;
smtpClient.Send(mail);
}
}
finally
{
mail.Dispose();
}
}
}
catch (SmtpFailedRecipientsException ex)
{
foreach (SmtpFailedRecipientException t in ex.InnerExceptions)
{
var status = t.StatusCode;
if (status == SmtpStatusCode.MailboxBusy ||
status == SmtpStatusCode.MailboxUnavailable)
{
return View(status);
}
else
{
return View(status);
}
}
}
catch (SmtpException Se)
{
// handle exception here
return View(Se);
}
catch (Exception ex)
{
return View(ex);
}
答案 0 :(得分:0)
此处不显示错误消息,但可能是客户端身份验证错误。 请尝试:
另外需要注意的是,最后你的MailMessage()对象不需要尝试..因为它已经包含在using语句中,所以当它到达using块的末尾时,它将为你处理它,并且任何错误都会被你的外部try catch块捕获。
答案 1 :(得分:0)
删除所有异常处理,然后重试。找出错误是什么,然后从那里开始。
我怀疑你遇到困难的原因是你尝试/捕捉设置方式的b / c。内在的尝试/捕获让我觉得有点奇怪。