SmtpClient:使用SmtpDeliveryMethod.SpecifiedPickupDirectory时忽略密

本文关键字:SpecifiedPickupDirectory 使用 SmtpDeliveryMethod SmtpClient | 更新日期: 2023-09-27 18:19:25

在2010年(当时我们还在使用。Net 2.0),我们遇到了一个问题,当使用SmtpDeliveryMethod时,邮件没有发送给密件抄送收件人。

使用SmtpClient指定pickupdirectory。

在搜索了网页(链接和链接)之后,我做了以下的解决方案:

if (message.Bcc.Count > 0)
{
    System.Text.StringBuilder bcc = new System.Text.StringBuilder();
    for (int i = 0; i < message.Bcc.Count; i++)
    {
        bcc.Append(message.Bcc[i].Address);
        bcc.Append(";");
    }
    message.Headers.Add("Bcc", bcc.ToString());
    message.Bcc.Clear();
}
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory;
smtp.PickupDirectoryLocation = PickupDir;
smtp.Send(message);

这个解决方法的副作用是,密件抄送的收件人在发送邮件的头部是可见的,但在我们的情况下,这不是一个问题,因为密件抄送是用于记录目的的。

A几天前,我们切换到。Net 4.0(最终),问题再次出现。我试着删除这个变通方法,但也没有帮助。

切换到SmtpDeliveryMethod。网络不是一个解决方案,因为发送方法阻塞并使用户等待(取决于邮件服务器负载),而发送邮件不是一个选项。异步发送邮件也不是一个选项,因为当发送失败或进程崩溃时,邮件将丢失。

我在网上找不到任何解决这个问题的方法,所以有人有什么想法吗?

SmtpClient:使用SmtpDeliveryMethod.SpecifiedPickupDirectory时忽略密

这在。net 4.0中不起作用。但它不是Bug,它是这样设计的。看看这个链接

似乎在。net 3.5中有一个Bug允许实现你正在寻找的行为

相关文章:
  • 没有找到相关文章