2010-11-30 63 views
5

可能重複:
Sending email through Gmail SMTP server with C#如何用C#與Gmail SMTP服務器郵件?

對於C#和使用Gmail的SMTP服務器的郵件有什麼樣的,我們應該做的一件棘手的事情?因爲經過大量搜索,我找到了一些方法來做到這一點,但是我得到了一個失敗例外。我想這是因爲我不處理TSL for Gmail(因爲它與TSL協同工作),但我不知道如何用C#處理TSL。我非常感謝任何幫助或鏈接到有用的示例。這是我的代碼:

public string SendMail(string senderMail, string receiverMail, string attachmentPath) 
{ 
    var fromMailAddress = new MailAddress(senderMail); 
    var toMailAddress = new MailAddress(receiverMail); 

    MailMessage mailMessage = new MailMessage(fromMailAddress, toMailAddress); 
    mailMessage.Subject = "My Subject"; 
    mailMessage.Body = "This is the body of this message for testing purposes"; 

    Attachment attachFile = new Attachment(attachmentPath); 
    mailMessage.Attachments.Add(attachFile); 

    SmtpClient emailClient = new SmtpClient(); 

    NetworkCredential credential = new NetworkCredential(); 
    credential.UserName = fromMailAddress.User; 
    credential.Password = "password"; 

    emailClient.Credentials = credential; 
    emailClient.Port = 587; 
    emailClient.Host = "smtp.gmail.com"; 

    //emailClient.EnableSsl = true; //Here should be for TSL, but how? 

    emailClient.Send(mailMessage); 
} 
+0

讓他問! :P – Seva 2010-11-30 12:51:57

+0

歡迎來到SO!這是一個很好的問題,你附上正確的代碼。不過,之前也有類似的問題,請參閱上面的鏈接。這可能是你遇到特殊的例外;在這種情況下,如果您發佈了例外的確切消息,人們可以更好地幫助您。 – Marijn 2010-11-30 13:04:26

回答

1

你應該告訴異常的消息。 但是,取消註釋emailClient.EnableSsl = true; 如果仍然無法正常工作,您的防火牆或路由器可能會阻塞端口。

5

請嘗試下面的代碼。這是我長期以來使用的工作代碼。

// Configure mail client (may need additional 
    // code for authenticated SMTP servers). 
    SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587); 

    // Set the network credentials. 
    mailClient.Credentials = new NetworkCredential("[email protected]", "YourGmailPassword"); 

    //Enable SSL. 
    mailClient.EnableSsl = true; 

    // Create the mail message (from, to, subject, body). 
    MailMessage mailMessage = new MailMessage(); 
    mailMessage.From = new MailAddress("[email protected]"); 
    mailMessage.To.Add(to); 

    mailMessage.Subject = subject; 
    mailMessage.Body = body; 
    mailMessage.IsBodyHtml = isBodyHtml; 
    mailMessage.Priority = mailPriority; 

    // Send the mail. 
    mailClient.Send(mailMessage); 

參考:Sending Email using a Gmail Account

相關問題