Страницы

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

четверг, 26 декабря 2019 г.

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

#c_sharp #aspnet_mvc


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

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;


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








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


Ответы

Ответ 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);

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

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