Похоже, что .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 = "Test";
mail.From = new System.Net.Mail.MailAddress("[email protected]");
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);
}
Это создает файл .eml, который выглядит следующим образом:
X-Sender: [email protected]
X-Receiver: [email protected]
MIME-Version: 1.0
Кому: [email protected]
Дата: 6 июл 2011 15:55:28 -0400
Тема: Тест
Content-Type: text/plain; Charset = US-ASCII
Content-Transfer-Encoding: quoted-printable
Здравствуйте, это короткий тест проблемы: https://test =
.. com/' > https://test.com/: = 20
При отправке файла или открытии в Outlook (или любой другой программе) появляются двойные точки (т.е. test..com). Обратите внимание: если я удалю лишнее пространство (в "is a" ), testsite будет правильно отображаться, поскольку точка больше не появляется в начале строки.
Это вызывает проблему при попытке отправить адреса веб-сайтов, и мы получаем звонки от клиентов, говорящих, что они не могут нажимать на наши ссылки.
Кто-нибудь еще испытал это? Как мы можем решить эту проблему, кроме написания нашей собственной кодировки?