如何修复此C#SendAsync方法?
我是一名新的ASP.NET开发人员,我正在从事一个项目,在该项目中,管理员/系统可以向用户发送电子邮件。由于我不希望管理员等待系统发送电子邮件,所以我计划使用SendAsync方法 然而,我得到了一个非常奇怪的错误 “捕获到SMTPExecution:发送邮件失败。” 我无法解决它 供您参考,我使用的是.NETFramework4如何修复此C#SendAsync方法?,c#,sendasync,C#,Sendasync,我是一名新的ASP.NET开发人员,我正在从事一个项目,在该项目中,管理员/系统可以向用户发送电子邮件。由于我不希望管理员等待系统发送电子邮件,所以我计划使用SendAsync方法 然而,我得到了一个非常奇怪的错误 “捕获到SMTPExecution:发送邮件失败。” 我无法解决它 供您参考,我使用的是.NETFramework4 protected void btnSend_Click(object sender, EventArgs e) { try
protected void btnSend_Click(object sender, EventArgs e)
{
try
{
Mailer mail = new Mailer();
string senderE = ConfigurationManager.AppSettings["EmailID"].ToString();
string senderName = "Test User"
string recipientName = "TestSender";
string subject = txtSubject.Text;
string body = txtMessage.Text;
mail.SendAsync(senderE, senderName, recipient, recipientName, subject, body);
lblInfo.Text = "sent successfully :)";
Response.Redirect("Test.aspx");
}
catch
{
lblInfo.Text = "Error!!!";
}}
以下是自定义邮件器类中SendAsync方法的代码:
public void SendAsync(string sender, string senderName, string recipient, string recipientName, string subject, string body)
{
var message = new MailMessage()
{
From = new MailAddress(sender, senderName),
Subject = subject,
Body = body,
IsBodyHtml = true
};
message.To.Add(new MailAddress(recipient, recipientName));
try
{
var client = new SmtpClient();
client.SendCompleted += new SendCompletedEventHandler(MailDeliveryComplete);
string userState = "Test";
client.SendAsync(message, userState);
}
catch (Exception ex)
{
//handle exeption
throw ex;
}
finally
{
//clean up.
message.Dispose();
}
}
public static void MailDeliveryComplete(object sender, AsyncCompletedEventArgs e)
{
string message = "";
// Get the unique identifier for this asynchronous operation.
MailMessage mail = e.UserState as MailMessage;
if (e.Error != null)
{
//handle error
message = "Error " + e.Error.ToString() + " occurred";
}
else if (e.Cancelled)
{
//handle cancelled
message = "Send canceled for mail with subject " + mail.ToString();
}
else
{
//handle sent email
message = "Mail sent successfully";
}
}
那么我如何修复它呢?
更新#1:
顺便说一下,我正在将所有SMTP配置保存在Web.Config文件中。以下是设置:
<system.net>
<mailSettings>
<smtp from="My Gmail Account" deliveryMethod="Network">
<network enableSsl="true" host="smtp.gmail.com" port="587" userName="Username" password="Password" defaultCredentials="false"/>
</smtp>
</mailSettings>
</system.net>
知道我为什么会出现这种错误吗?这是哪一行?是否有innerex?仅供参考:永远不要使用
throw-ex代码>。这会破坏堆栈跟踪(异常源将指示为throw ex
,而不是实际抛出的位置)!只需使用throw代码>要正确重新发送ID,是否将本地主机设置为SMTP服务器?顺便说一下,SMTP服务器使用端口25作为默认端口,它被大多数ISPsDId阻止为默认端口。您是否尝试使用相同的值同步?逐步简化代码。您可能忘了设置EnableSSL或其他内容。ps:客户端凭据如何?
if (e.Error != null)
{
//handle error
message = "Error " + e.Error.ToString() + " occurred";
}