Страницы

Поиск по вопросам

понедельник, 3 декабря 2018 г.

Отправить почту через .РФ домен

Для рассылки почты использовал достаточно простой метод отправки.
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);

Комментариев нет:

Отправить комментарий