Не удается отправить SMTP-письма с использованием настроек Office365

Я использую почту SMTP для отправки почты с помощью Laravel. Все работает отлично, кроме настроек почты office365.

Настройки, которые я использовал, следующие:

SMTP HOST = smtp.office365.com
SMTP PORT = 587
SMTP ENCRYPTION = tls
SMTP USER = username(email)
SMTP PASS = password

Ошибка, которую я получаю:

554 5.2.0 STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied; Failed to process message due to a permanent exception with message Cannot submit message

Я уже много искал в Google эту ошибку, все говорят о беспорядке, таком как эта ссылка. Решение этой ошибки Но я лично не нахожу никакого беспорядка после выполнения всех упомянутых шагов.

Я не могу войти в этот адрес электронной почты, так как это идентификатор электронной почты нашего клиента, и у меня нет разрешения на вход.

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

Любые предложения были бы замечательными.

Связанное вами решение предназначено для другой ошибки «MapiExceptionNotFound», для вашей ошибки посмотрите здесь: social.technet.microsoft.com/Forums/en-US/…

dparoli 20.02.2019 11:51

Ваша ссылка также говорит о том же. Но я не могу найти беспорядок, как уже упоминалось

Milind Patel 20.02.2019 12:05

Вам нужно использовать заголовок Sender, а не заголовок From. Убедитесь, на какой заголовок влияет ваш клиент, когда вы устанавливаете адрес электронной почты, с которого отправляется почта.

Paul-Sebastian Manole 07.10.2020 12:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
70
3
118 369
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Эта ошибка означает, что пользователь, учетные данные которого вы указали в SMTP-соединении, не может отправлять сообщения от имени пользователя, указанного в заголовках From и/или Sender MIME или команде FROM SMTP.

Я застрял с этой ошибкой в ​​течение 4 полных дней. Я буду думать о вас каждый день своей жизни, сэр!!

IfElseTryCatch 18.04.2019 23:02
Ответ принят как подходящий

Outlook не позволяет отправлять сообщения с использованием адреса, отличного от вашего имени пользователя, для входа в систему.

Вам нужно, чтобы оба адреса электронной почты были одинаковыми.

Вы можете добавить одного или нескольких отправителей в панель администратора, после чего вы сможете легко отправлять сообщения с разных адресов.

оба адреса электронной почты одинаковы?

Mitul Marsoniya 05.11.2019 14:44

Из электронной почты, которую вы используете для отправки в коде, и из электронной почты, которую вы фактически отправляете.

Milind Patel 05.11.2019 15:04

Это решило проблему для меня. Я использовал плагин Wordpress Easy WP SMTP, и мне нужно было убедиться, что «От адреса электронной почты» и «Имя пользователя SMTP» совпадают.

Jake 16.12.2019 09:34

Да, я потратил свои 7 дней на эту проблему. Наконец, это решает мою проблему. Надеюсь, вы не зря потратили столько времени.

Milind Patel 16.12.2019 09:43

как добавить одного или нескольких отправителей в Outlook?

Irfan 23.12.2019 04:53

Проверьте эту ссылку. support.office.com/ru-ru/article/…

Milind Patel 23.12.2019 06:00

За этот пост нужно проголосовать и защитить его для дальнейшего использования! Точное решение конкретной проблемы.

Berker Yüceer 29.01.2020 08:25

ОМГ, спасибо большое!!!!!!!! то, что я сделал в Laravel, просто изменил конфигурацию/почту с

Jackaroo Ng 18.02.2020 14:53

Лучший ответ, Милинд Патель.

nosequeweaponer 01.06.2020 19:22

Я люблю этот пост! Расшифровать его на первый взгляд было непросто. Но как только я понял, что он имел в виду, я почувствовал удовлетворение.

JeanAlesi 19.08.2020 22:11

Это безумие. Я думаю, слишком просто вернуть сообщение об ошибке, например «Адрес заголовка не соответствует отправителю конверта». или «Имя пользователя и адрес электронной почты не совпадают». SMTP является открытым стандартом. Microsoft не должна возвращать конкретные сообщения о реализации через SMTP, они принадлежат журналам сервера. В идеале мы бы понятия не имели, через какую среду мы отправляем. Мы ни в коем случае не должны часами искать значение ошибки SMTP, прежде чем мы сможем начать искать решение.

imclean 29.08.2020 23:31

Возьми еще 10 баллов, Ты гений ха-ха!

joedotnot 17.02.2021 14:57

Спасибо, это было гениально

surbhi agr 03.03.2021 14:19

@imclean Это еще хуже! Мало того, что MS не должна возвращать сообщение, зависящее от реализации, но и Postfix говорит мне warning: smtp.office365.com[40.100.175.146]:587: response longer than 2048: , что подразумевает, что это даже не совсем законно...

Auspex 06.04.2021 16:15

@Auspex Каков полный ответ, включая код ошибки? Я не уверен, что здесь применимо, но строки ответа могут состоять из 512 октетов (4096 бит). Вероятно, это можно настроить в Postfix. Эта ошибка появляется в ответ на ошибку, указанную выше?

imclean 13.04.2021 06:32

Ваш ответ работает, но, к сожалению, на странице, на которую вы ссылаетесь, написано: «Microsoft уберет возможность подключать новые учетные записи к Outlook.com с 10 мая 2021 года». Вроде бы его уже удалили и мы не можем сейчас добавить другие адреса отправки.

Betty 11.06.2021 16:57

После попыток в течение 4 дней почта начала запускаться с портом: 25, поэтому вместо попыток с 587 или 465. Попробуйте с другими номерами портов.

хост: "smtp.office***.*", порт: 25, безопасное соединение: ложь, требуютTLS: правда, тлс: { шифры: 'SSLv3' }, авторизация: { Пользователь: *, проходят: *** }

Я сталкиваюсь с подобной проблемой, и я решил ее прямо сейчас, вы, скорее всего, столкнулись с этой проблемой, потому что ваша электронная почта «пользователь» в опции авторизации и электронная почта «от» в опции почты отличаются

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

const transporter = nodemailer.createTransport({
            service: 'outlook',
            port: 587,
            auth: {
                user: '[email protected]',
                pass: '******'
            },
            tls: {
                rejectUnauthorized: false
            }
        });


        // setup email data with unicode symbols
        let mailOptions = {
            from: "[email protected]", // sender address
            to: '[email protected]', // list of receivers
            subject: 'Node Contact Request', // Subject line
            text: 'Hello world?', // plain text body
            html: output // html body
        };

        // send mail with defined transport object
        transporter.sendMail(mailOptions, (error, info) => {
            console.info(info);
            if (error) {
                return console.info(error);
            }
            console.info('Message sent: %s', info.messageId);
            console.info('Preview URL: %s', nodemailer.getTestMessageUrl(info));
        });

Если ваша электронная почта не подтверждена, вы, вероятно, получите больше ошибок

Я использовал Hotmail, и у меня была эта проблема, но я решил ее, отредактировав MAIL_FROM_ADDRESS так, чтобы он был таким же, как MAIL_USERNAME

Ниже приведен мой файл env.

MAIL_MAILER=smtp
MAIL_HOST=smtp-mail.outlook.com
MAIL_PORT=587
[email protected] (this must be the same as MAIL_FROM_ADDRESS!)
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=tls
[email protected] (this must be the same as MAIL_USERNAME!)

Все заработало после вышеописанного.

вы также можете использовать этот почтовый драйвер: https://github.com/motze92/office365-почта

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

для этой проблемы проверьте электронную почту системного администратора jenkins, она совпадает с электронной почтой пользователя smtp.

Что работает для меня, так это установить DEFAULT_FROM_EMAIL как EMAIL_HOST_USER. Работа с Office 365 SMTP и Django 3.0.10.

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