通过C#通过Google Apps帐户发送电子邮件

问题描述:

我有一个标准的Google Apps帐户。我通过Google Apps设置了一个自定义域名。当我使用Gmail界面时,我可以通过Google Apps成功发送和接收电子邮件。但是,我想通过代码发送电子邮件。为了尝试这个,我一直在尝试下面的代码:通过C#通过Google Apps帐户发送电子邮件

MailMessage mailMessage = new MailMessage(); 
mailMessage.To.Add("[email protected]"); 
mailMessage.Subject = "Test"; 
mailMessage.Body = "<html><body>This is a test</body></html>"; 
mailMessage.IsBodyHtml = true; 

// Create the credentials to login to the gmail account associated with my custom domain 
string sendEmailsFrom = "[email protected]";    
string sendEmailsFromPassword = "password"; 
NetworkCredential cred = new NetworkCredential(sendEmailsFrom, sendEmailsFromPassword); 

SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587); 
mailClient.EnableSsl = true; 
mailClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
mailClient.UseDefaultCredentials = false; 
mailClient.Timeout = 20000; 
mailClient.Credentials = cred; 
mailClient.Send(mailMessage); 

当达到发送方法,一个异常被抛出各国:

“SMTP服务器要求安全 连接或者客户端不是 认证。服务器响应 是:5.5.1认证要求。“

如何通过Google通过我的自定义域发送电子邮件?

谢谢!

+0

是否端口465更好地工作,也许启用? – Lucero 2009-04-16 21:01:35

+0

上面的代码有什么问题? – Marko 2011-02-19 12:38:10

+1

我得到一个超时问题,但看着所有的代码smaples,似乎我的代码和设置是正确的。 – 2014-07-11 20:12:44

没有必要对代码中的所有smtp设置进行硬编码。把它们放在web.config中。这样,您可以根据需要加密这些设置,并在不重新编译应用程序的情况下即时更改它们。

<configuration> 
    <system.net> 
    <mailSettings> 
     <smtp from="[email protected]" deliveryMethod="Network"> 
      <network host="smtp.gmail.com" port="587" 
       userName="[email protected]" password="password"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 
</configuration> 

末,当您发送电子邮件只是你SmtpClient启用SSL:

var message = new MailMessage("[email protected]"); 
// here is an important part: 
message.From = new MailAddress("[email protected]", "Mailer"); 
// it's superfluous part here since from address is defined in .config file 
// in my example. But since you don't use .config file, you will need it. 

var client = new SmtpClient(); 
client.EnableSsl = true; 
client.Send(message); 

确保你是从与你试图在Gmail中进行身份验证的电子邮件地址发送电子邮件。

注意:从.NET 4.0开始,您可以在web.config中插入enableSsl =“true”,而不是在代码中进行设置。

端口更改为465

这是我在WPF 4

使用
SmtpClient client = new SmtpClient(); 
client.Credentials = new NetworkCredential("[email protected]", "[email protected]$$w0rD"); 
client.Port = 587; 
client.Host = "smtp.gmail.com"; 
client.EnableSsl = true; 

try { 
    MailAddress 
     maFrom = new MailAddress("[email protected]", "Sender's Name", Encoding.UTF8), 
     maTo = new MailAddress("[email protected]", "Recipient's Name", Encoding.UTF8); 
    MailMessage mmsg = new MailMessage(maFrom.Address, maTo.Address); 
    mmsg.Body = "<html><body><h1>Some HTML Text for Test as BODY</h1></body></html>"; 
    mmsg.BodyEncoding = Encoding.UTF8; 
    mmsg.IsBodyHtml = true; 
    mmsg.Subject = "Some Other Text as Subject"; 
    mmsg.SubjectEncoding = Encoding.UTF8; 

    client.Send(mmsg); 
    MessageBox.Show("Done"); 
} catch (Exception ex) { 
    MessageBox.Show(ex.ToString(), ex.Message); 
    //throw; 
} 

手表防火墙和防病毒。这些令人毛骨悚然的事情往往阻止应用程序发送电子邮件 我使用迈克菲企业和我必须添加可执行文件名称(如Bazar。*为Bazar.exe和Bazar.vshost.exe)以便能够发送电子邮件...

有没有必要做任何事情。第一次登录您的当前帐户并按照说明操作。

您的问题将解决。这是因为您在Google应用中创建了该帐户但未登录。只需登录并按照说明操作即可。

我的代码连接到smtp.google.com使用TLS上的端口= 587(SSL应该是端口465),但仍需要EnableSsl =真

SmtpClient smtp = new SmtpClient(); 
smtp.Host = "smtp.gmail.com"; 
smtp.Port = 587; 
smtp.EnableSsl = true; 
smtp.UseDefaultCredentials = false; 
NetworkCredential credentials = new NetworkCredential(); 
credentials.UserName = "INSERT EMAIL"; 
credentials.Password = "INSERT PASSWORD"; 
smtp.Credentials = credentials; 

MailAddress addressFrom = new MailAddress(credentials.UserName); 
MailAddress addressTo = new MailAddress("INSERT RECIPIENT"); 
MailMessage msg = new MailMessage(addressFrom, addressTo); 
msg.Subject = "SUBJECT" 
msg.Body = "BODY"; 

smtp.Send(msg); 

通知上你的Google+帐户SUITE这些

重要先决条件