2

PHP Pear を使用してメールを送信しようとしています。この設定で Gmail を使用してメールを送信すると機能します。

$smtp = Mail::factory('smtp', array(
    'host' => 'ssl://smtp.gmail.com',
    'port' => '465',
    'auth' => true,
    'username' => 'username@gmail.com',
    'password' => 'password!2016'
));

ただし、これを機能させる前に、「安全性の低いアプリがアカウントにアクセスできるようにする」必要があります。その方法については、こちらを参照してください。

この設定で Outlook アカウントを使用しようとしました:

$smtp = Mail::factory('smtp', array(
    'host' => 'tls://smtp.office365.com',
    'port' => '587',
    'auth' => true,
    'username' => 'email@domain.org',
    'password' => 'greatPasswordComesWithGreatResponsibilities'
));

しかし、私はこのエラーが発生します:

ssl://smtp.office365.com:587 に接続できませんでした [SMTP: ソケットの接続に失敗しました: fsockopen(): ssl://smtp.office365.com:587 に接続できません (不明なエラー) (コード: - 1、応答: )]

Microsoft の SMTP 設定に関する公式記事を確認しました。そのため、適切な設定があると思いましたが、機能していません。

何か不足していますか?なぜこのエラーが発生するのですか? サード パーティのアプリが電子メールを送信できるようにする前に、Gmail の場合と同様に、Outlook アカウントで構成する必要がある設定はありますか?

4

1 に答える 1

-1

これは役に立たないかもしれませんが、投稿のタイトルには Outlook アカウントが記載されていますが、リンクと SMTP 設定は Office365 for Business アカウントを参照しています。ビジネス アカウントについてはわかりませんが、実際に個人の Outlook.com アカウントを持っている場合は、設定が異なります。また、gmail で行ったように、pop/smtp アクセスを有効にするために変更する必要があるアカウントのオプションがあります。

Microsoft の公式記事は次のとおり です。 ui=en-US&rs=en-US&ad=US&fromAR=1

ただし、要約すると、smtp サーバーは smtp-mail.outlook.com であり、Outlook アカウントで pop/smtp を有効にするには、[オプション] > [アカウントの管理] > [デバイスとアプリを POP に接続] を探します。

更新: 実際にビジネス アカウントを使用している場合は、この投稿を確認してください。

彼のコードの重要な項目は、ホスト名の前に「tls://」がないことです。コンシューマ Outlook アカウントを持っていますが、tls:// プレフィックスで同様のソケット エラーが発生します。そのプレフィックスを削除すると、はるかに先に進みますが (工場で debug=true を設定)、後で認証エラーで失敗します。代わりに 5.2.16 PHPMailer を使用すると、メールは正常に送信されますが、ヘッダーによってスパムの拒否率が心配されます (DKIM がない、AWS エンティティに対して SPF がソフトフェイルであり、-f に関する警告があるなど)。そして、電子メールは、別のテスト受信者 @outlook.com のジャンク フォルダーに行き着きました。しかし、私は脱線します。

于 2016-11-16T17:50:29.570 に答える