2016-10-18 33 views
0

當我使用outlook時,我能夠發送測試電子郵件到我的gmail地址,但是,當我從控制檯應用程序執行它時觸發:「服務器的迴應是:5.7.1無法中繼「編程電子郵件觸發「服務器響應是:5.7.1無法中繼」

using System.Net.Mail; 
namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      MailMessage mail = new MailMessage("[email protected]", "[email protected]"); 
      SmtpClient client = new SmtpClient(); 
      client.Port = 25; 
      client.DeliveryMethod = SmtpDeliveryMethod.Network; 
      client.UseDefaultCredentials = false; 
      client.Host = "xxx.xxx.com"; 
      mail.Subject = "this is a test email."; 
      mail.Body = "this is my test email body"; 
      client.Send(mail); 
     } 
    } 
} 

我證實我通過Outlook有正確的客戶端主機。我還給我自己發了一封測試郵件(從xx @ mycompany到xx @ mycompany)並且工作正常(儘管它將郵件發送到垃圾郵箱)。爲什麼它不讓我通過這個控制檯應用程序發送傳出的電子郵件,但我可以通過Outlook中的相同地址。

+0

檢查類似的問題:http://stackoverflow.com/questions/3165721/mailbox-unavailable-the-server-response-was-5-7-1-unable-to-relay-for-abcxyz –

+0

是啊我做了,儘管有相同的錯誤信息,但對我來說,這看起來不是同樣的問題。 –

+0

即時通訊發送到Gmail帳戶,我不需要本地端口的SMTP服務器? –

回答

1

我敢肯定,如果你有client.UseDefaultCredentials = false;,你需要設置憑據。至少這是我做的:

client.UseDefaultCredentials = false; 

client.Credentials = new System.Net.NetworkCredential(someusername, somepassword); 

編輯:我要澄清,client.UseDefaultCredentials = false;,並不一定意味着你需要列出的憑證,但如果你要發送到外部域(gmail.com),然後您的SMTP服務器很可能需要某種類型的SMTP驗證。

+0

這取決於 - 如果SMTP接受匿名連接,則不一定需要提供憑據。此外,電子郵件成功發送到自身(表明與SMTP的連接不是問題),而不是其他域。這似乎是SMTP上的權限錯誤。 – user1666620

+0

發送給自己的所有電子郵件如果託管在同一個域/服務器上,則會成功。 OP正在嘗試發送到Gmail。我敢打賭,如果他從outlook中刪除了他的信譽,並試圖發送到Gmail,他會得到同樣的錯誤。 –

+0

所以你同意這個答案可能無濟於事。 – user1666620

相關問題