2011-03-27 82 views
3

嘿,夥計們,我正嘗試使用Hotmail帳戶設置電子郵件發送應用程序。 的代碼看起來是這樣的:C#應用程序中的SMTP客戶端發送錯誤

MailMessage mail = new MailMessage(from, to); 
     mail.Subject = "Proba email"; 
     mail.Attachments.Add(new Attachment("C:\\Documents and Settings\\Proba.txt")); 
     SmtpClient client = new SmtpClient(); 
     client.UseDefaultCredentials = false; 
     client.Port = 587; // 465 568 
     client.Host = "smtp.live.com"; 
     client.EnableSsl = true; 
     client.Credentials = new System.Net.NetworkCredential("[email protected]", "password"); 
     client.SendCompleted += new SendCompletedEventHandler(client_SendCompleted); 
     client.SendAsync(mail, "token"); 

使用,異步其實我沒有錯誤,我甚至得到發送的反饋消息說,(事件觸發器),但從未收到郵件。如果我使用簡單的客戶端。發送無效,我得到以下錯誤:

5.3.4 Requested action not taken; To continue sending messages, please sign in to your account.

因此,任何想法是什麼問題可以?當我試圖解除hotmail的SMTP設置時,我得到了各種設置,指出端口25,然後是587,所以也許它在那裏。任何幫助將不勝感激,謝謝!

  • 好吧所以現在肯定有效,我只想問我是否必須定期做「我不是機器人檢查」或是一次性的東西?
+0

我重新記錄到自己的帳戶,並問了垃圾郵件的檢查,看看是否我的機器人。現在消息已經通過並且實際到達了,但是我是否需要經常這樣做或者這是一次性的事情? – SaintHUN 2011-03-27 19:52:14

+0

如果一個帳戶檢查機器人,那麼可能機器人是不允許的?你正在寫一個機器人。 – 2011-03-27 19:55:55

+0

我認爲這個垃圾郵件問題之前已經被問過了,沒有什麼可以做的。收件人必須在他們的地址簿中加入**地址,以確保傳送至收件箱。 – 2011-03-27 19:56:27

回答

5

這是我的設置,BTW async不會返回任何錯誤。

<system.net> 
<mailSettings> 
    <!-- E-mail server settings --> 
    <smtp from="[email protected]"> 
    <network host="smtp.example.com" port="25" userName="" password="" defaultCredentials="true" /> 
    </smtp> 
</mailSettings> 

void SendEmail(EmailEntity email) 
    { 
     var mailMessage = new MailMessage { From = new MailAddress(email.From) }; 
     mailMessage.To.Add(new MailAddress(email.To)); 
     mailMessage.Subject = email.Subject; 
     mailMessage.Body = email.Body; 
     mailMessage.IsBodyHtml = true; 

     // Send the email 
     var client = new SmtpClient(); 
     client.Send(mailMessage); 
    } 
+0

謝謝,它現在可以工作,我想我應該瞭解一下這個垃圾郵件保護,看看我是否可以發送郵件,而不必驗證每個X電子郵件的人性。 – SaintHUN 2011-03-27 20:08:43

2

我有一個類似的設置,我只是使用Send(),這對我來說很有用。我唯一額外的東西是

client.DeliveryMethod = SmtpDeliveryMethod.Network; 

只是在client.Send();之前。不知道這是否會解決您的問題。你有相同的服務器和憑據的前景設置?

+0

我想(?)它默認使用網絡方法,所以我不認爲你需要添加。 – SaintHUN 2011-03-27 19:56:42

+0

謝謝你救了我的命 – 2016-01-12 21:14:30

0
SmtpClient smtpClient = new SmtpClient(); 
     MailMessage message = new MailMessage(); 

     try 
     { 
      // System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); 
      MailAddress fromAddress = new MailAddress(txt_name.Text, txt_to.Text); 


      smtpClient.Host = "smtp.gmail.com"; 


      smtpClient.Port = 25; 

      // msg.From = new System.Net.Mail.MailAddress("[email protected]"); 

      message.From = fromAddress; 

      message.To.Add("[email protected]"); 


      message.Body = txt_des.Text; 
      smtpClient.EnableSsl = true; 

      System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential(); 

      NetworkCred.UserName = "[email protected]"; 

      NetworkCred.Password = "xtz"; 

      smtpClient.UseDefaultCredentials = true; 

      smtpClient.Credentials = NetworkCred; 


      smtpClient.Send(message); 

      lblStatus.Text = "Email successfully sent."; 
     } 
     catch (Exception ex) 
     { 
      lblStatus.Text = "Send Email Failed." + ex.Message; 
     } 
+0

試試....這可能有助於你 – r12 2011-03-28 05:37:39

相關問題