2011-03-10 69 views
5

我試圖使用MailMessage class構建傳送到SMTP服務器以使用SmtpClient類進行傳送的電子郵件。 我的電子郵件是通過交換服務器在outlook上配置的。 關於上述實現,我有以下懷疑:將MailMessage發送到Exchange服務器併發送到SMTP服務器之間的區別

1)Exchange Server和SMTP服務器有什麼區別?

2)在我的情況下,我的outlook是使用我的證書在交換服務器上配置的。如何找到SMTP地址以便我能夠實現MailMessage類?

3)如果上述實施技術不可行,通過基於交換服務器的應用程序發送電子郵件的任何想法?

我正在使用Visual Studio 2008,框架3.5 SP1,在C#作爲語言的winforms應用程序上工作。請幫助我清除我的疑惑。

編輯

我使用下面的代碼。它不會拋出任何錯誤,它也不會起作用。我試圖發送和電子郵件給自己卜無濟於事

public static void CreateMessageWithAttachment(string server) 
    { 
     // Specify the file to be attached and sent. 
     // This example assumes that a file named Data.xls exists in the 
     // current working directory. 
     string file = "data.xls"; 
     // Create a message and set up the recipients. 
     MailMessage message = new MailMessage(
      "[email protected]", 
      "[email protected]", 
      "Quarterly data report.", 
      "See the attached spreadsheet."); 

     // Create the file attachment for this e-mail message. 
     Attachment data = new Attachment(file, MediaTypeNames.Application.Octet); 
     // Add time stamp information for the file. 
     ContentDisposition disposition = data.ContentDisposition; 
     disposition.CreationDate = System.IO.File.GetCreationTime(file); 
     disposition.ModificationDate = System.IO.File.GetLastWriteTime(file); 
     disposition.ReadDate = System.IO.File.GetLastAccessTime(file); 
     // Add the file attachment to this e-mail message. 
     message.Attachments.Add(data); 

     //Send the message. 
     SmtpClient client = new SmtpClient(server); 
     // Add credentials if the SMTP server requires them. 
     client.Credentials = CredentialCache.DefaultNetworkCredentials; 

    try { 
      client.Send(message); 
     } 
     catch (Exception ex) { 
      Console.WriteLine("Exception caught in CreateMessageWithAttachment(): {0}", 
       ex.ToString());    
     } 

     data.Dispose(); 
    } 
+0

@Phoenix:contoso.com是一個示例域。這些電子郵件不是真實的。沒有必要把它們弄糟。 – BoltClock 2011-06-14 18:28:58

回答

5

1)什麼是一個Exchange服務器和SMTP服務器之間的區別?

交換服務器包含更多的東西。

2)在我的情況下,我的outlook是使用憑證在交換服務器上配置的。如何找到SMTP地址以便我能夠實現MailMessage類?

Outlook - >工具 - >帳戶 - >編輯帳戶。

與交換服務器地址相同。端口25是標準的SMTP端口。 Exchange可能需要身份驗證。

3)如果上述實施技術不可行,通過基於交換服務器的應用程序發送電子郵件的任何想法?

你不能只使用MailMessage,你也需要SmtpClient

實施例使用Exchange:Getting a sent MailMessage into the "Sent Folder"

+0

感謝您的快速回復。我用我用來獲得解決方案的代碼更新了我的問題。請檢查您是否可以找出我的代碼中的任何錯誤 – reggie 2011-03-10 14:23:12

+0

1.您是否嘗試過沒有附件? 2.你確定你正在使用正確的服務器地址嗎? 3)你是否嘗試過手動指定憑據? – jgauffin 2011-03-10 14:32:46

+0

所有問題的答案是肯定的。但是,例如,我的交換服務器地址是abcd.abc.company.com,它不起作用。所以現在我已將它更改爲abcd.abc.company.com:25,以指定SMTP端口號。但那不起作用。 – reggie 2011-03-10 14:36:52

2

SMTP是一個協議中,一組管理兩個系統之間的通信規則。該協議定義了發送郵件的規則。

SMTP服務器是一個使用此協議發送郵件的組件(主要是軟件)。

MS Exchange使用SMTP發送郵件,但它也管理域中用戶的用戶和郵箱。