Gmail:如何以编程方式发送电子邮件

可能完全重复: 通过Gmail在C#.NET中发送电子邮件

嗨,

我正在尝试使用gmail发送电子邮件:

我尝试了在本网站和其他网站上找到的各种示例,但我总是得到同样的错误:
无法连接到远程服务器 – > System.net.Sockets.SocketException:无法建立连接,因为目标主动拒绝它209.85.147.109:587

public static void Attempt1() { var client = new SmtpClient("smtp.gmail.com", 587) { Credentials = new NetworkCredential("MyEmailAddress@gmail.com", "MyPassWord"), EnableSsl = true }; client.Send("MyEmailAddress@gmail.com", "some.email@some.com", "test", "testbody"); } 

有任何想法吗?

UPDATE

更多细节。

也许我应该说我做出的其他尝试给了我同样的错误:(注意当我没有指定端口时它尝试端口25)

  public static void Attempt2() { var fromAddress = new MailAddress("MyEmailAddy@gmail.com", "From Name"); var toAddress = new MailAddress("MyEmailAddy@dfdf.com", "To Name"); const string fromPassword = "pass"; const string subject = "Subject"; const string body = "Body"; var smtp = new SmtpClient { Host = "smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential(fromAddress.Address, fromPassword) }; using (var message = new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body } ) { smtp.Send(message); } } public static void Attempt3() { MailMessage mail = new MailMessage(); mail.To.Add("MyEmailAddy@dfdf.com"); mail.From = new MailAddress("MyEmailAddy@gmail.com"); mail.Subject = "Email using Gmail"; string Body = "Hi, this mail is to test sending mail" + "using Gmail in ASP.NET"; mail.Body = Body; mail.IsBodyHtml = true; SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com"; smtp.Credentials = new System.Net.NetworkCredential ("MyEmailAddy@gmail.com", "pass"); smtp.EnableSsl = true; smtp.Send(mail); } 

我正在使用以下代码:

 SmtpClient sc = new SmtpClient("smtp.gmail.com"); NetworkCredential nc = new NetworkCredential("username", "password");//username doesn't include @gmail.com sc.UseDefaultCredentials = false; sc.Credentials = nc; sc.EnableSsl = true; sc.Port = 587; try { sc.Send(mm); } catch (Exception ex) { EventLog.WriteEntry("Error Sending", EventLogEntryType.Error); } 

使用以下代码,它将成功运行。

 MailMessage mail = new MailMessage(); mail.From = new MailAddress("abc@mydomain.com", "Enquiry"); mail.To.Add("abcdef@yahoo.com"); mail.IsBodyHtml = true; mail.Subject = "Registration"; mail.Body = "Some Text"; mail.Priority = MailPriority.High; SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587); //smtp.UseDefaultCredentials = true; smtp.Credentials = new System.Net.NetworkCredential("xyz@gmail.com", ""); smtp.EnableSsl = true; //smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.Send(mail); 

但是,使用Gmail有一个问题。 电子邮件将成功发送,但收件人收件箱中的gmail地址将位于“发件人地址”中,而不是代码中提到的“发件人地址”。

要解决此问题,请按照以下链接中提到的步骤进行操作。

http://karmic-development.blogspot.in/2013/10/send-email-from-aspnet-using-gmail-as.html

在执行上述所有步骤之前,您需要对您的Gmail帐户进行身份validation,以允许访问您的应用程序以及设备。 请通过以下链接检查帐户身份validation的所有步骤:

http://karmic-development.blogspot.in/2013/11/allow-account-access-while-sending.html

这是我从Java连接到Gmail的连接资源

   

在安全端口上连接您的Gmail帐户(适用于SMTP的465和适用于POP3的995),并使用任何可用的.NET SSL工厂安全地连接到Gmail。

您确定您的GMail帐户已设置为允许POP / SMTP连接吗? 这是一个可配置选项,您可以根据需要打开和关闭。

您可以在http://codersatwork.wordpress.com/2010/02/14/sending-email-using-gmail-smtp-server-and-spring-mail/上查看我的博客文章,其中介绍了如何使用弹簧邮件通过gmail smtp服务器发送电子邮件。

我使用java但您可以在c#代码中看到配置并使用它。

尝试使用端口号465进行SSL连接