System.Net.Mail创建无效的电子邮件和eml文件?在主机名中插入额外的点。
System.Net.Mail创建无效的电子邮件和eml文件?在主机名中插入额外的点。
看起来.NET的SmtpClient在创建电子邮件时,如果点号出现在MIME编码行的开头,会在主机名中添加一个额外的点号(例如test.com有时会显示为test..com)。示例代码:
[TestMethod] public void TestEmailIssue() { var mail = new System.Net.Mail.MailMessage(); var smtpClient = new System.Net.Mail.SmtpClient(); mail.To.Add("[email protected]"); mail.Subject = "测试"; mail.From = new System.Net.Mail.MailAddress("[email protected]"); mail.Body = "您好,这是一个问题的简短测试:" +" https://test.com/: "; smtpClient.PickupDirectoryLocation = "C:\\temp\\"; smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory; smtpClient.Send(mail); }
这将创建一个.eml文件,内容如下:
X-Sender: [email protected]
X-Receiver: [email protected]
MIME-Version: 1.0
From: [email protected]
Date: 6 Jul 2011 15:55:28 -0400
Subject: 测试
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
您好,这是一个问题的简短测试:https://test=
..com/'>https://test.com/:=20
当发送该文件或在Outlook(或其他程序)中打开时,会显示双点号(即test..com)。请注意,如果我删除额外的空格(在“is a”中),test.com将显示正确,因为点号不再出现在行的开头。
这在尝试发送网址时会造成问题,我们接到客户的电话称无法点击我们的链接。是否有其他人遇到过这个问题?除了编写自己的编码外,我们如何解决这个问题?