2011-03-10 34 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发送邮件,但它也管理域中用户的用户和邮箱。