Bee*_*eep 29 .net c# email smtpclient
如果点出现在MIME编码行的开头(例如test.com有时显示为test..com),.NET的SmtpClient似乎正在创建主机名中带有额外点的电子邮件.示例代码:
[TestMethod]
public void TestEmailIssue()
{
var mail = new System.Net.Mail.MailMessage();
var smtpClient = new System.Net.Mail.SmtpClient();
mail.To.Add("Test@test.com");
mail.Subject = "Test";
mail.From = new System.Net.Mail.MailAddress("test@test.com");
mail.Body = "Hello this is a short test of the issue:"
+" <a href='https://test.com/'>https://test.com/</a>: ";
smtpClient.PickupDirectoryLocation = "C:\\temp\\";
smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory;
smtpClient.Send(mail);
}
Run Code Online (Sandbox Code Playgroud)
这会创建一个如下所示的.eml文件:
X-Sender:test@test.com
X-Receiver:Test@test.com
MIME版本:1.0
来自:test@test.com
致:Test@test.com
日期:2011年7月6日15:55:28 -0400
主题:测试
内容类型:text/plain; 字符集= US-ASCII
Content-Transfer-Encoding:quoted-printable
您好,这是对该问题的简短测试:https:// test =
..com /'> https://test.com/:= 20
当发送文件,或开口在Outlook(或任何其他程序),双点显示(即test..com).请注意,如果我删除了额外的空格(在"是"中),则test.com会正确显示,因为该点不再出现在行的开头.
这在尝试发送网站地址时会出现问题,我们会收到来自客户的电话,说他们无法点击我们的链接.
还有其他人经历过这个吗?除了编写自己的编码之外,我们如何解决这个问题呢?
Chr*_*aas 48
这实际上符合RFC 2821(4.5.2透明度)
在发送一行邮件文本之前,SMTP客户端会检查该行的第一个字符.如果是句点,则在行的开头插入一个附加句点.
.Net只是将文件存储在"准备发送"模式,这意味着它不必在发送之前使用电子邮件,而是可以按原样传输.不幸的是,这种格式与Outlook Express的EML格式显然不是100%相同.您应该能够将编码设置为UTF-8(或类似的东西),并为您启用Base-64编码.
mail.BodyEncoding = System.Text.Encoding.UTF8;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6692 次 |
| 最近记录: |