这是代码。
void sendMail()
{
MailMessage mail = new MailMessage();
mail.To.Add("abc@gmail.com");
mail.From = new MailAddress("abc@gmail.com", txt_name.Text);
mail.Subject = txt_subject.Text;
mail.Body = txt_body.Text;
SmtpClient smtp = new SmtpClient("smtp.gmail.com");
smtp.EnableSsl = true;
NetworkCredential yetki = new NetworkCredential("abc@gmail.com", "11111111");
smtp.Credentials = yetki;
smtp.Send(mail);
Response.Write("mailiniz başarılı bir şekilde gönderilmiştir");
}
protected void btn_gonder_Click(object sender, EventArgs e)
{
sendMail();
}
答案 0 :(得分:6)
使用try / catch块
void sendMail() {
try{
MailMessage mail = new MailMessage();
mail.To.Add("abc@gmail.com");
mail.From = new MailAddress("abc@gmail.com", txt_name.Text);
mail.Subject = txt_subject.Text;
mail.Body = txt_body.Text;
SmtpClient smtp = new SmtpClient("smtp.gmail.com");
smtp.EnableSsl = true;
NetworkCredential yetki = new NetworkCredential("abc@gmail.com", "11111111");
smtp.Credentials = yetki;
smtp.Send(mail);
Response.Write("mailiniz başarılı bir şekilde gönderilmiştir");
}
catch(Exception e){
Response.Write(e.Message);
}
}
答案 1 :(得分:2)
表示未处理的错误意味着您没有捕获异常。现在,您在catch块中实际处理异常的工作取决于您,例如将其记录到文件,排队重试或显示消息框。或者试图做一些事情来防止异常。
protected void btn_gonder_Click(object sender, EventArgs e)
{
try{
sendMail();
}
catch(Exception ex)
{
}
}
另请注意,您可以访问ex.Message以查看异常消息,或者向catch块添加断点并检查ex。由于身份验证的要求,您可能需要做更多工作才能使其与gmail一起使用。我不知道网络凭据是否足够。我一直遇到麻烦,并使用我的ISP的电子邮件帐户,不需要身份验证。
答案 2 :(得分:2)
您可以在代码中添加try / catch块并忽略错误,或者发布整个异常消息,以便我们帮助您解决实际问题。
答案 3 :(得分:1)
根据this page通过SSL发送邮件时,您应该使用端口465,即
SmtpClient smtp = new SmtpClient("smtp.gmail.com");
smtp.EnableSsl = true;
smtp.Port = 465;
...
你应该仍然可以在try / catch块中包含对Send
的调用,并处理任何被抛出的SmtpException
,如果你可以做任何事情的话。
请注意,您也可以将smtpClient配置放在web.config文件中(例如,请参阅here)。
答案 4 :(得分:1)
您尚未指定Gmail的端口号587。
smtp.port = 587;
你的问题应该解决了。否则你的代码看起来不错。