Обмен технологиями

.net C# Используйте почтовый ящик NetEase 163 для создания службы smtp для реализации функции отправки электронных писем.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Описание функции: Используйте проверку электронной почты для активации регистрации пользователя и восстановления пароля. Почтовый ящик выбирает NetEase 163 в качестве SMTP-сервера.

Реальная тестовая ситуация: Тип 1: Порт 25 у большинства операторов серверов заблокирован по умолчанию. Вы можете связаться с оператором, чтобы разблокировать порт 25. После разблокировки порт 25 можно использовать. Второй тип: используйте зашифрованные порты 465 и 587. После тестирования порт 587 не смог отправить и вернул сообщение «Невозможно прочитать данные из соединения передачи», поэтому здесь выполняется только настройка порта 465. Ниже приведены коды двух успешных случаев. Пожалуйста, выберите в соответствии с реальной ситуацией.

Из информации в Интернете я узнал, что порт 587 почтовых ящиков Alibaba и QQ также не смог отправить, поэтому на данный момент известно, что порт 587 службы stmp трех основных операторов NetEase, Alibaba и QQ вышел из строя.

Шаг первый: Запустите службу smtp. Войдите в почтовый ящик NetEase [Настройки] — в левом меню найдите [POP3/SMTP/IMAP], включите услугу и получите пароль авторизации (обратите внимание: пароль в коде использует пароль авторизации).Установите как показано на картинке

Шаг 2. Настройте правила стека брандмауэра сервера и добавьте порт 465.

Шаг 3: Код.

Send25 — это метод проверки возможности отправки электронной почты через порт 25. Используемая библиотека классов System.Net.Mail

публичная пустота Send25()
        {

//this.SmtpHost //Указываем адрес smtp-сервера

//this.SmtpPort //порт smtp-сервера

//this.FromEmailAddress //Адрес электронной почты для отправки писем

//this.FormEmailPassword //Пароль электронной почты для отправки писем, здесь используется код авторизации

//this.ToList //Адрес электронной почты для получения писем, который может представлять собой коллекцию, разделенную запятыми.


//System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;//Проверка подлинности
SmtpClient smtp = новый SmtpClient(); //Создание экземпляра SmtpClient
smtp.DeliveryMethod = SmtpDeliveryMethod.Network //Устанавливаем исходящий режим smtp в Network;
smtp.EnableSsl = false //Включает ли SMTP-сервер SSL-шифрование;
smtp.Host = this.SmtpHost; //Указываем адрес smtp-сервера;
smtp.Port = this.SmtpPort; //Укажите порт smtp-сервера. По умолчанию — 25. Если используется порт по умолчанию, его можно опустить.
smtp.UseDefaultCredentials = true; // Если ваш SMTP-сервер не требует аутентификации личности, используйте следующий метод. Однако в настоящее время в аутентификации практически нет необходимости.
//smtp.EnableSsl = false;
smtp.Credentials = new NetworkCredential(this.FromEmailAddress, this.FormEmailPassword); //Если требуется аутентификация, используйте следующий метод;

MailMessage mm = new MailMessage(); //Создаем экземпляр почтового класса
mm.Priority = MailPriority.Normal; //Приоритет электронной почты делится на низкий, нормальный и высокий. Обычно можно использовать нормальный.
mm.From = новый MailAddress(this.FromEmailAddress, «Администратор», Encoding.GetEncoding(936));

//получатель
если (!string.IsNullOrEmpty(this.ToList))
mm.To.Add(this.ToList);
//Копия человека
если (!строка.IsNullOrEmpty(этот.CCList))
mm.CC.Add(this.CCList);
//КК
если (!string.IsNullOrEmpty(this.BccList))
mm.Bcc.Add(this.BccList);

mm.Subject = this.Subject //Заголовок электронного письма;
mm.SubjectEncoding = Encoding.GetEncoding(936); //Это очень важно, если заголовок вашего письма содержит китайский язык, его необходимо указать здесь, иначе собеседник, скорее всего, получит искаженные символы.
mm.IsBodyHtml = this.IsBodyHtml //Находится ли тело письма в формате HTML;
mm.BodyEncoding = Encoding.GetEncoding(936); //Кодировка тела письма установлена ​​неправильно, и получатель будет получать искаженные символы.
mm.Body = this.Body //Текст электронного письма;
//Почтовое вложение
если (этот.СписокВложений != null && это.СписокВложений.Количество > 0)
            {
foreach (Вложение в this.AttachmentList)
                {
mm.Вложения.Добавить(вложение);
                }
            }
smtp.Отправить(мм);

        }

Send465 — это метод проверки возможности отправки электронной почты через порт 465. Используемая библиотека классов System.Web.Mail

публичный логический Send465()
        {
// Тема письма
System.Web.Mail.MailMessage mmsg = new System.Web.Mail.MailMessage();
//Тема письма
mmsg.Subject = "Тема";
mmsg.BodyFormat = System.Web.Mail.MailFormat.Html;
//Текст электронного письма
mmsg.Body = "Текст";

//Кодировка текста
mmsg.BodyEncoding = Кодировка.UTF8;
//приоритет
mmsg.Приоритет = Системный.Веб.Почта.Приоритет.Почты.Обычный;
//Адрес электронной почты отправителя
mmsg.От = Электронная почта;
//Адрес получателя
mmsg.To = электронная почта;

mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
//имя пользователя
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", Email);
//Пароль (код авторизации)
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", Emailpwd);
//порт
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", Порт);
//Есть ли SSL
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl",true);
//Smtp-сервер
System.Web.Mail.SmtpMail.SmtpServer = Хост;
пытаться
            {
Система.Веб.Почта.SmtpMail.Отправить(mmsg);
вернуть истину;
            }
поймать (исключение ex)
            {
вернуть ложь;
            }
        }