2014-10-09 91 views
-1

我想在我的Windows系統上創建一個帶有身份驗證的SMTP服務器。出於測試原因,我不想從互聯網下載另一個SMTP工具,所以我嘗試直接在代碼中發送電子郵件(僅用於調試)。我的代碼此刻:通過SmtpClient發送郵件的例外

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Net; 
using System.Net.Mail; 

namespace smttest 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 

     SmtpClient smtpClient = new SmtpClient(); 
     NetworkCredential basicCredential = 
     new NetworkCredential("username", "password"); 
     MailMessage message = new MailMessage(); 
     MailAddress fromAddress = new MailAddress("[email protected]"); 

     smtpClient.Port = 26; 
     smtpClient.Host = "localhost"; 
     smtpClient.UseDefaultCredentials = false; 
     smtpClient.Credentials = basicCredential; 

     message.From = fromAddress; 
     message.Subject = "testmail"; 
     //Set IsBodyHtml to true means you can send HTML email. 
     message.IsBodyHtml = true; 
     message.Body = "testmail from sharp"; 
     message.To.Add(new MailAddress("[email protected]")); 

     try 
     { 
      smtpClient.Send(message); 
     } 
     catch(Exception ex) 
     { 
      //Error, could not send the message 
      Console.Write(ex.Message); 
      Console.ReadLine(); 
     } 


    } 
} 
} 

該cmd只顯示我:發送電子郵件時發生錯誤(德語翻譯)。我不知道如何解決這個問題。

+0

我錯過了什麼嗎?所有代碼都與SMTP客戶端相關,而您的問題可能與您的服務器實現有關...... – 2014-10-09 16:22:48

+0

您想創建一個SMTP *服務器*?你爲什麼要這樣做?對於已經存在於黑桃中的產品來說,這是很多*的工作。另外,您發佈的代碼不是SMTP服務器。它使用* SMTP服務器。如果您編寫該服務器,並且該服務器不發送電子郵件,則該問題將在該服務器上*。不在向其發送請求的代碼中。 – David 2014-10-09 16:24:02

+0

它捕捉到異常嗎?如果可以的話,你可以給完整的堆棧跟蹤嗎? – Grice 2014-10-09 16:24:13

回答

0

您正在使用localhost作爲您的SMTP服務器。它是電子郵件服務器嗎?如果不是,則不能使用SMTPClient發送電子郵件。您需要SMTP服務器,如smtp.google.com

-1

我有點困惑。我需要一個運行在C#中的具有auth(簡單用戶/密碼)的電子郵件(SMTP)服務器,使用名爲「MaxBulkMailer」的另一個軟件發送電子郵件。 c#中的SMTP服務器應該在cmd上運行,不需要GUI。

+0

請編輯你的問題,因爲這不能回答你的問題。 – 2014-10-10 08:55:40