如何使用c#向Exchange邮件分发列表发送电子邮件

8
我需要使用c#向一个名为“DL-IT”的Exchange分发列表发送电子邮件。 有人知道如何实现吗?
5个回答

8

最简单的方法是找到实际的邮件地址,并在“收件人”字段中使用该地址。Exchange发行列表实际上有自己的电子邮件地址,因此这应该可以很好地工作。


如果我想从电子邮件中删除分发列表的电子邮件地址,并将其发送给单个列表成员,该怎么办? 我在这里的问题中有更多细节:http://stackoverflow.com/questions/37728507/exchange-splitting-a-distribution-group/37728692?noredirect=1#comment62931266_37728692 - David Gidony

3
Exchange服务器运行SMTP,因此可以使用 SmtpClient发送电子邮件。
可以手动查找分发列表的SMTP地址,并将其用作“to”地址在 MailMessage构造函数中。如果仅传递分发列表的名称,则构造函数调用将失败,因为它看起来不像是一个真正的电子邮件地址。
public void Send(string server, string from, string to)
{
    // Client to Exchange server
    SmtpClient client = new SmtpClient(server);

    // Message
    MailMessage message = new MailMessage(from, to);
    message.Body = "This is a test e-mail message sent by an application. ";
    message.Subject = "test message 1";

    // Credentials are necessary if the server requires the client 
    // to authenticate before it will send e-mail on the client's behalf.
    client.Credentials = CredentialCache.DefaultNetworkCredentials;

    // Send
    client.Send(message);
}

Exchange 会对通过 SMTP 发送的 DL 名称进行这样的查找吗?我曾经认为它不会这样做。 - Harper Shelby

2

基本上,你需要将上述两个解决方案结合起来。

使用Scott的代码片段 - 你应该发送到DL-IT@mycompany.com

但是,交换名称别名并不总是与组电子邮件相同,因此

  • 您可以在Outlook中打开一个空电子邮件,在To字段中输入DL-IT
  • 双击To字段中的DL-IT
  • 复制Alias Name字段中的值并添加@mycompany.com

0
在我的情况下,它没有起作用,因为我将电子邮件发送到了为此列表定义的多个别名之一。对我来说,显示使用的地址可能与实际地址不同。
我让它工作的方法是在Outlook(2016)中单击“收件人...”按钮,然后在全局通讯簿中搜索ML。有两个条目,一个带有地球符号,一个带有人物符号。

enter image description here

右键点击带有地球标志的那个,选择属性。在这里您可以找到电子邮件地址。


0

以上的答案都很好,只是要注意,如果分发列表中的某个成员不是有效地址,则SMTP服务器可能会拒绝整个电子邮件消息,因为无法投递。

这可能是因为在我们的情况下,我们正在使用一个不属于Exchange的SMTP服务器,但仍然需要注意这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接