传送到分拣目录时的.NET 4.5 SMTP客户端点填充问题

Jak*_*ond 5 c# smtp smtpclient mailmessage

希望有人能够帮助解决这个问题,我一直在寻找,我似乎无法在任何地方找到答案.

我正在创建一个邮件消息,将其传递到指定的拾取目录,此代码在过去已经多次使用而没有问题.现在,当我检查生成的文件,更具体地说是在eml文件中检查URL时,我可以看到中间有一个double ..根据我一直在阅读的内容,据我所知,如果消息中第一行的第一个字符开头,这是SMTP协议的一部分..此文件稍后将被另一项服务接收,该服务将最终执行电子邮件的发送.

我打电话时,我已经能够将它缩小到确切的线client.Send().如果我在发送之前检查邮件正文,则表明URL已正确形成.在我调用它之后检查消息体,..URL中存在该消息.

我的问题或问题如下:

  1. 有没有其他人在使用时遇到点填充问题SmtpDeliveryMethod.SpecifiedPickupDirectory
  2. 谁能正确处理这个问题呢?.NET SMTP或辅助服务,以便在以后选择此消息并将其发送到最终目标?
  3. 关于如何解决这个问题的任何建议?

我以前尝试过这里描述方法,但它失败了,有很多例外.

我主要是想找到一种方法将这个eml文件保存到磁盘上的一个位置,以后可以将其重新拾取并发送,我对C#的了解仍然相当有限,所以我可能会看到一些简单的东西,所以任何建议或指导将非常感谢!

我已经创建了一小段代码来尝试重新创建问题,这不是我正在使用的确切内容,但它确实显示通过client.Send()方法发送后,有2'.. '在字符串的开头.

using (var client = new SmtpClient())
{
client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
client.PickupDirectoryLocation = @"C:\temp";
var message = new MailMessage();
message.To.Add(new MailAddress("alice@a.com"));
message.From = new MailAddress("bob@b.com");
message.Subject = "Smtp Dot Stuffing Test";
message.Body = ".A.B.C..... .0.1.2.3.4.5.6.7.8.9";
client.Send(message);
}
Run Code Online (Sandbox Code Playgroud)

jst*_*ast 3

保存到文件时,SmtpClient 不应进行字节填充。仅当实际将消息流“上传”到 SMTP 服务器时才需要这样做,以防止过早结束 DATA 命令(以“.\r\n”行终止)。

如果 SmtpClient 在保存到文件时是字节填充,那么这是非常破坏的行为。

由于如果您使用 System.Net.Mail(我假设您是),这是不可能解决的,因此我可能建议使用MimeKit创建消息并将其保存到文件中。

然后,如果您需要重新解析消息并通过 SMTP 发送它,您可以使用MailKit来完成此操作。