2016-10-08 61 views
0

我使用下面的代碼來發送email.when我正在特林發送郵件我收到錯誤消息錯誤:SMTP服務器需要安全連接或客戶端未通過身份驗證。服務器響應爲:5.5.1需要驗證

MailMessage mail = new MailMessage(from.txt, to.txt, subject, body); 
SmtpClient clint = new SmtpClient(); 
//for determile email smtp... 
string x = from.txt; 
int startIndex = x.IndexOf('@'); 
int endIndex = x.LastIndexOf('.'); 
int length = endIndex - startIndex; 
string xx = x.Substring(startIndex + 1, length - 1); 

if (xx == "gmail" || xx == "Gmail") 
{ 
    clint.Host = "smtp.gmail.com"; 
    clint.Port = 587; 
    clint.EnableSsl = true; 
} 
if (xx == "Hotmail" || xx == "hotmail" || xx == "live" || xx == "Live") 
{ 
    clint.Host = "smtp.live.com"; 
    clint.Port = 587; 
    clint.EnableSsl = true; 
} 
if (xx == "yahoo" || xx == "Yahoo") 
{ 
    clint.Host = "smtp.mail.yahoo.com"; 
    clint.Port = 465; 
    clint.EnableSsl = true; 
} 
clint.Credentials = new System.Net.NetworkCredential(username, password); 
clint.DeliveryMethod = SmtpDeliveryMethod.Network; 
clint.UseDefaultCredentials = false; 
clint.Send(mail); 
MetroMessageBox.Show(this, "Email Successfully Send", "Success", 
        MessageBoxButtons.OK, MessageBoxIcon.Information); 

以及任何文件怎麼能把這個電子郵件

+0

用戶名應該是完整的電子郵件地址。你是? –

+0

啓用雙因素身份驗證(又稱爲兩步驗證),然後生成應用程序專用密碼。使用新生成的密碼通過SMTP進行身份驗證。 –

+0

爲什麼不使用服務提供商允許您使用的SMTP服務器並使其更容易? –

回答

0

對於你得到的錯誤,我在線閱讀你應該在Credentials行之前使用UseDefaultCredentials,並且你的clint對象的EnableSsl應該被設置爲true。

Reference here

,以及如何可以通過添加附件的郵件對象的任何文件附加到這個電子郵件

您可以:

mail.Attachments.Add(new Attachment(filename)); 

我忘了提, Gmail中的雙重身份驗證可能會成爲問題。如果是這樣,請參閱我之前鏈接的鏈接中的第二個解決方案。

相關問題