我在使用SendMailAsync
时遇到问题当我将其更改为正常Send
时,它可以正常工作。当我使用SendMailAsync
时,我的连接超时并且没有发送邮件。我设置错了吗?
编辑:
我改变了变量名!!!
2.确切的错误发生在这里await smtpClient.SendMailAsync(mailMessage);
它会挂起,直到连接超时,我收到错误描述“连接已超时”返回的状态代码是General Error
我现在从一个按钮的onClick事件调用sendEmail。 await unitOfWork.Instance.SendEmail(...)
这是onclick事件中的一行代码
public async Task SendEmail(List<string> notificationList, string emailSubject, string emailMessage)
{
var message = new MailMessage()
{
IsBodyHtml = true,
BodyEncoding = System.Text.Encoding.UTF8,
Subject = emailSubject,
From = new MailAddress(FromEmailAddress),
Body = emailMessage
};
try
{
foreach (var emailAddress in notificationList)
{
message.To.Add(emailAddress);
}
var people = string.Join(Environment.NewLine, message.To);
MessageBox.Show(@"from: " + unitOfWork.CurrentSystemUser.Person.Email + "To: " + people);
await SendMessage(message);
}
catch (Exception E)
{
...
}
finally
{
...
}
}
private async Task SendMessage(MailMessage mailMessage)
{
if (!CanSendSmtpEmail) return;
await SendSmtpMail(mailMessage);
}
public async Task SendSmtpMail(MailMessage mailMessage)
{
SmtpClient smtpClient = new SmtpClient(SmtpClientHost, int.Parse(SmtpClientPort));
smtpClient.SendCompleted += (s, e) => {
smtpClient.Dispose();
mailMessage.Dispose();
};
await smtpClient.SendMailAsync(mailMessage);
//smtpClient.Send(mailMessage) works fine
}
答案 0 :(得分:1)
增加SmtpClient.Timeout不会起作用,因为它只适用于同步Send方法(参见here)。
当我使用GMail进行测试时,您的代码对我来说运行正常(如解释here)您可以尝试使用GMail或其他SMTP服务器吗?我想也许你的SMTP服务器是&#34;表现得很有趣&#34;。也许你可以告诉我们你是如何调用SendEmail方法的?
旁注: