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

223
28 декабря 2017, 21:39

Для рассылки почты использовал достаточно простой метод отправки.

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 + "\n" + exception.InnerException + "\n" + exception.Data;
                    throw new FaultException(exception.Message);
                }
            }
        }
    }

Всё отлично работает. Но необходимо отправлять почту с .рф домена и тут возникла проблема. Не возможно отправить, выдает ошибку

System.Net.WebException: Невозможно разрешить удаленное имя "мойсайт.рф" 

пробовал добавить в код

 smtpClient.DeliveryFormat = SmtpDeliveryFormat.International;

тоже не помогло, как быть? где это разрешается? Читал про:

<uri>
<idn enabled="All"/>
<iriParsing enabled="true"/>

Но не могу понять как это в моём случае использовать?

Answer 1

Вам нужно сконвертировать домен в 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);
READ ALSO
Расшифровка POST запроса от Unity3d

Расшифровка POST запроса от Unity3d

Есть приложение на Unity, которое отправляет POST запрос серверу

242
CrossConnectivity.Current.IsRemoteReachable не соединяется

CrossConnectivity.Current.IsRemoteReachable не соединяется

Доброе время сутокЕсть кроссплатформенное решение Xamarin, установлен плагин Xam

213
PhantomJs клик по ссылкам в цикле

PhantomJs клик по ссылкам в цикле

Вот такая функция делает клик по ссылке и потом сохраняет скрин страницы

277
Как запустить функцию в callback magnific popup?

Как запустить функцию в callback magnific popup?

На форме есть чекбокс, чек которого снимает disable с кнопкиЕсли форма вызывается по ajax (используется magnific popup), код не работает

366