Я пытаюсь отправить письмо с помощью PHP Pear. Это работает, когда я отправляю электронную почту, используя Gmail со следующими настройками:
$smtp = Mail::factory('smtp', array(
'host' => 'ssl://smtp.gmail.com',
'port' => '465',
'auth' => true,
'username' => '[email protected]',
'password' => 'password!2016'
));
Но прежде чем я сделаю эту работу, я должен «разрешить менее безопасным приложениям» доступ к моей учетной записи, которую вы можете прочитать Вот о том, как это сделать.
Я пытался использовать учетную запись Outlook с этими настройками:
$smtp = Mail::factory('smtp', array(
'host' => 'tls://smtp.office365.com',
'port' => '587',
'auth' => true,
'username' => '[email protected]',
'password' => 'greatPasswordComesWithGreatResponsibilities'
));
но я получаю эту ошибку:
Не удалось подключиться к ssl: //smtp.office365.com: 587 [SMTP: Не удалось подключить сокет: fsockopen (): невозможно подключиться к ssl: //smtp.office365.com: 587 (неизвестная ошибка) (код: — 1, ответ:)]
Я проверил официальная статья Microsoft в отношении своих настроек SMTP. Поэтому я подумал, что у меня правильные настройки, но это не работает.
Я что-то пропустил? Почему я получаю эту ошибку? Есть ли параметр, который мне нужно настроить в моей учетной записи Outlook, как в Gmail, прежде чем стороннему приложению будет разрешено отправлять электронную почту?
Это может не помочь, но заголовок вашего сообщения только что сказал учетную запись Outlook, но настройки ссылки и SMTP относятся к учетным записям Office365 для бизнеса. Я не могу пролить свет на корпоративную учетную запись, но если у вас действительно есть личная учетная запись Outlook.com, настройки будут другими. Кроме того, в учетной записи есть опция, которую вы должны изменить, чтобы включить доступ к pop / smtp, как вы это делали в gmail.
Официальная статья Microsoft:
https://support.office.com/en-us/article/Add-your-Outlook-com-account-to-another-mail-app-73f3b178-0009-41ae-aab1-87b80fa94970?ui=en-US&Rs = EN-US&Объявление = US&fromAR = 1
Но, кратко, сервер smtp называется smtp-mail.outlook.com, и для включения pop / smtp в вашей учетной записи Outlook найдите «Параметры»> «Управление учетной записью»> «Подключите устройства и приложения с помощью POP».
Обновить:
Если вы на самом деле используете бизнес-аккаунт, вы должны проверить этот пост, который утверждает, что он работает: https://stackoverflow.com/a/26004690/2891120
Ключевой элемент в его коде — у него нет «tls: //» перед именем хоста. У меня есть учетная запись Outlook и я получаю аналогичный сбой сокета с префиксом tls: //. Если я удаляю этот префикс, я получаю намного больше (установите debug = true на заводе), но позже провал с ошибкой аутентификации. Вместо этого, используя 5.2.16 PHPMailer, я успешно отправляю почту, но заголовки заставляют меня беспокоиться о степени отклонения спама (без DKIM, для моей сущности AWS не было softfail, с предупреждением о -f и других). И электронная почта оказалась в папке нежелательной почты моего другого тестового получателя @ outlook.com. Но я отвлекся.
Других решений пока нет …