Как отправить электронное письмо в .net, когда включена 2FA — многофакторная аутентификация

У меня есть простой код, используемый на нескольких старых веб-сайтах, код используется для отправки уведомления по электронной почте при отправке формы. Этот код работает нормально. Однако ИТ-администратор хочет включить многофакторную аутентификацию (MFA) для электронной почты отправителя, которая в основном является адресом электронной почты Office365.

Приведенный ниже код может работать, поскольку он не может повлиять на адрес электронной почты с поддержкой MFA, поскольку мы используем это письмо для отправки электронной почты с использованием кода?

using System;
using System.Net;
using System.Net.Mail;

protected void SendEmail()
{
    string fromEmail = "[email protected]";
    string appPassword = "YourAppPassword"; // Use the App Password generated for the application
    string toEmail = "[email protected]";
    string subject = "Test Email";
    string body = "This is a test email sent from ASP.NET WebForms.";

    try
    {
        using (MailMessage mail = new MailMessage())
        {
            mail.From = new MailAddress(fromEmail);
            mail.To.Add(toEmail);
            mail.Subject = subject;
            mail.Body = body;
            mail.IsBodyHtml = true;

            using (SmtpClient smtp = new SmtpClient("smtp.office365.com", 587))
            {
                smtp.EnableSsl = true;
                smtp.Credentials = new NetworkCredential(fromEmail, appPassword); // Use the App Password
                smtp.Send(mail);
            }

            Response.Write("Email sent successfully.");
        }
    }
    catch (Exception ex)
    {
        Response.Write("Error: " + ex.Message);
    }
}

создайте пароль приложения: support.microsoft.com/en-us/account-billing/…

rene 06.05.2024 12:33

Теперь можно обмануть: stackoverflow.com/questions/55566016/…

rene 06.05.2024 12:36
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
238
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После исследования этого вопроса это вполне возможно, как указано в некоторых ссылках, однако эти справочные документы относятся к старым версиям решения. Поэтому я обновляю рабочее решение последней версией документации, доступной на MS. решение практически такое же.

Код останется прежним, только вам нужно будет использовать пароль приложения, который можно создать на странице https://mysignins.microsoft.com/security-info

Шаг 1: войдите на свой веб-сайт Office365 после включения MFA/2FA. Шаг 2: перейдите на вкладку «Информация о безопасности» и добавьте новый метод входа «+ Добавить метод входа».

Шаг 3. Выберите метод пароля приложения и выполните шаги.

Шаг 4. сохраните пароль приложения для использования в коде.

smtp.Credentials = new NetworkCredential(fromEmail, appPassword);

Это все, что вам нужно сделать, и код должен работать без проблем. Я протестировал этот код несколько раз, чтобы убедиться, что вы можете отправлять электронную почту.

И последнее, что я хотел бы отметить: после включения 2FA/MFA от ИТ-администратора для этого пользователя вам следует подождать не менее 1 часа, чтобы изменения отразились глобально, поскольку мой код продолжал работать почти 10 минут после того, как 2FA был включен. включено без использования пароля приложения.

Другие вопросы по теме