Для рассылки почты использовал достаточно простой метод отправки.
public bool SendEmail(string UserName, string UserPassword, string emailTo, string subject, string body, bool isBodyHtml)
{
if (string.IsNullOrEmpty(emailTo))
{
return false;
}
using (System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient(SERVERSMTP, PORTNOSMTP))
{
smtpClient.EnableSsl = false;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new NetworkCredential(UserName, UserPassword);
using (MailMessage message = new MailMessage())
{
message.From = new MailAddress(UserName);
message.Subject = subject == null ? "" : subject;
message.Body = body == null ? "" : body;
message.IsBodyHtml = isBodyHtml;
message.To.Add(new MailAddress(emailTo));
try
{
smtpClient.Send(message);
return true;
}
catch (Exception exception)
{
//string s1 = exception.Message + "
" + exception.InnerException + "
" + exception.Data;
throw new FaultException(exception.Message);
}
}
}
}
Всё отлично работает. Но необходимо отправлять почту с .рф домена и тут возникла проблема. Не возможно отправить, выдает ошибку
System.Net.WebException: Невозможно разрешить удаленное имя "мойсайт.рф"
пробовал добавить в код
smtpClient.DeliveryFormat = SmtpDeliveryFormat.International;
тоже не помогло, как быть? где это разрешается? Читал про:
Но не могу понять как это в моём случае использовать?
Ответ
Вам нужно сконвертировать домен в Punycode.
using System.Globalization;
string unicode = @"россия.рф";
IdnMapping mapping = new IdnMapping();
string ascii = mapping.GetAscii(unicode);
Console.WriteLine(ascii);
string convertedBackToUnicode = mapping.GetUnicode(ascii);
Console.WriteLine(convertedBackToUnicode);
Комментариев нет:
Отправить комментарий