我正在使用gmail在我的asp.net应用程序中发送电子邮件。如果我在服务器上发送电子邮件但是如果我尝试在本地计算机上发送电子邮件,那么电子邮件可以正常工我在代码中放置了break point,当调用send方法时,它显示错误框,标题为“Smtp异常未被用户代码处理”,并详细说明了“Faliur发送邮件”。
如果我继续浏览器,则会显示包含以下详细信息的错误页面:
远程主机强制关闭现有连接说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Net.Sockets.SocketException:远程主机强行关闭现有连接
以下是我的代码,请指导我。
感谢。
protected void btnConfirm_Click(object sender, EventArgs e)
{
string _Message = GetAdminEmailMessage();
MailMessage message = new MailMessage();
SmtpClient smtp = new SmtpClient();
NetworkCredential mailAuthentication = new NetworkCredential("myaccount@gmail.com", "mypassword");
message.To.Add(new MailAddress("mc5678@hotmail.com"));
message.From = new MailAddress("myaccount@gmail.com");
message.IsBodyHtml = true;
message.Subject = "Local test email";
message.Body = _Message;
smtp.UseDefaultCredentials = false;
smtp.EnableSsl = true;
smtp.Port = 587;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Host = "smtp.gmail.com";
smtp.Credentials = mailAuthentication;
smtp.Send(message);
}
答案 0 :(得分:1)
错误代码0x800CCC0E表示端口已被阻止:http://support.microsoft.com/kb/191687
试试telnet smtp.gmail.com 587 - 你能连接吗?
如果你的端口被解锁并且你的凭据是正确的,那么这个问题的接受答案中的代码应该有效..
Sending email through Gmail SMTP server with C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential("myusername@gmail.com", "mypwd"),
EnableSsl = true
};
client.Send("myusername@gmail.com", "myusername@gmail.com", "test", "testbody");
Console.WriteLine("Sent");
Console.ReadLine();
}
}
}