2016-04-25 133 views
0

enter image description here我想學習如何發送一個簡單的電子郵件與c#visual studio窗體應用程序。 (它也可以是我關心的所有控制檯應用程序)。下面是我的代碼(我看不出有什麼不對的代碼,它應該工作吧?):從窗體應用程序發送電子郵件(爲什麼不工作)

using System.Net.Mail; 
namespace WindowsFormsApplication1 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      MailMessage mail = new MailMessage(); 
      SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); 

      mail.From = new MailAddress("(here is my email)"); 
      mail.To.Add("(here is my email)"); 
      mail.Subject = "toja"; 
      mail.Body = "ja"; 

      SmtpServer.Port = 587; 
      SmtpServer.Credentials = new System.Net.NetworkCredential("(here is my email)", "(here is my password)"); 
      SmtpServer.EnableSsl = true; 

      SmtpServer.Send(mail); 
      MessageBox.Show("mail Send"); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
    } 

} 

}

+0

你怎麼知道它不起作用?什麼是錯誤? – randominstanceOfLivingThing

+0

我不能告訴你整個eror的原因,我不能複製它,但這裏是開始的幾行:「System.Net.Mail.SmtpException:SMTP服務器rewuires一個安全的連接或客戶端沒有authuenticated。服務器響應是:5.5.1身份驗證「 –

+0

從此[頁面](https://support.google.com/mail/answer/78775?hl=zh-CN),如果您嘗試在端口465上配置SMTP服務器(使用SSL/TLS)和587端口(使用STARTTLS),但仍然無法發送郵件,請嘗試配置SMTP以使用端口25(使用SSL/TLS)。 – randominstanceOfLivingThing

回答

0

我用下面的從C#窗體應用程序並將其發送電子郵件作品。 也許你應該嘗試添加smtp.UseDefaultCredentials = false屬性並設置憑證屬性?

// Create our new mail message 
MailMessage mailMessage = new MailMessage(); 
mailMessage.To.Add("toAddress"); 
mailMessage.From = new MailAddress("fromAddress"); 
mailMessage.Subject = "subject"; 
mailMessage.Body = "body"; 

// Set the IsBodyHTML option if it is HTML email 
mailMessage.IsBodyHtml = true; 

// Enter SMTP client information 
SmtpClient smtpClient = new SmtpClient("mail.server.address"); 
NetworkCredential basicCredential = new NetworkCredential("username", "password"); 
smtpClient.UseDefaultCredentials = false; 
smtpClient.Credentials = basicCredential; 
smtpClient.Send(mailMessage); 

如果使用Gmail,您可以在這裏找到SMTP服務器信息https://support.google.com/a/answer/176600?hl=en。它看起來像地址是smtp.gmail.com,而端口是465(對於SSL)或587(對於TLS)。我建議你先嚐試使用默認端口25,確保你的電子郵件通過,然後根據需要調整到不同的端口。

+0

我試過使用您的代碼和「NetworkCredentials 「在這一行中:NetworkCredential basicCredential = new NetworkCredential(」username「,」password「);是一個錯誤,我該怎麼做呢?我覺得我錯過了很多東西,這真是讓我非常困擾。 –

+0

你可能需要以下導入...使用System.Security.Cryptography;使用System.Net的 ;使用System.Net.Mail的 ;使用System.Net.Mime的 ;使用System.Net.Mime的 – Phil

+0

當我點擊一個錯誤apers按鈕。我認爲這與港口有關。我應該使用什麼端口? –

相關問題