【问题标题】:Sending the same System.Net.MaiL.MailMessage to multiple recipients将相同的 System.Net.MaiL.MailMessage 发送给多个收件人
【发布时间】:2010-12-25 07:13:30
【问题描述】:

我有一个方法,它基本上具有“SendEmail”方法(稍后将由 WCF 服务使用)

它具有诸如主题、正文等参数以及收件人字符串[]。 我所做的是根据参数创建一个 MailMessage,然后使用 smtp 发送它 - 我知道 MailMessage 有一个 To MailAddressCollection,但是如果我将每个地址都添加到该地址,则该消息将抄送给集合中的每个人。

我想做的是单独发送给他们。

除了为 Recipient 数组中的每个项目创建单独的邮件消息并以这种方式发送之外,还有其他方法吗? 我也不想只密件抄送给他们……据我所知,这仍然记录在邮件的标题中,而且不是特别优雅。

【问题讨论】:

  • 密件抄送不会记录在邮件标题中,当您使用密件抄送时,收件人将永远无法看到这封邮件还发给了谁。 SMTP 服务器过滤掉这个邮件头。

标签: c# email mailmessage


【解决方案1】:

也许你可以使用这样的东西:

MailMessage msg= new MailMessage();
msg.Subject = *your subject text*;
msg.From = new MailAddress(*your address*, *your title*;);
msg.Body = *your body text*;;

foreach (DataRow row in dsRecipients .Tables[0].Rows)
{
    foreach (DataColumn col in dsRecipients .Tables[0].Columns)
    {
        msg.To.Clear();
        msg.To.Add(new MailAddress((string)row[col]));
        server.Send(msg);
    }
}

其中 dsRecipients 是一个包含您的收件人的数据集。

【讨论】:

    【解决方案2】:

    我认为在这种特殊情况下,您只能创建一个单独的 MailMessage 对象。

    【讨论】:

    • 我同意,但您不一定需要创建一个新对象,只需遍历收件人数组并更改 MailMessage 对象的 TO 地址,然后在循环内重新发送,直到到达最后一个收件人。
    • 如何更改收件人地址..?这是一个集合 - 我可以到 To.Clear() 然后 To.Add("my@address.com") 或类似的东西......
    • @alex 是的,您必须清除列表并添加新收件人
    • 使用这种方法唯一要记住的是,如果您确实有人抄送,那么每次您将电子邮件发送给特定的人时,他们都会收到发送给他们的电子邮件。跨度>
    猜你喜欢
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2014-02-06
    • 2014-10-15
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多