System.Net.Mail创建无效的电子邮件和eml文件?在主机名中插入额外的点。

7 浏览
0 Comments

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]

To: [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将显示正确,因为点号不再出现在行的开头。

这在尝试发送网址时会造成问题,我们接到客户的电话称无法点击我们的链接。是否有其他人遇到过这个问题?除了编写自己的编码外,我们如何解决这个问题?

0