web-dev-qa-db-ja.com

Office365 SMTPを使用したPHPMailerのセットアップ

クライアントの1つが自分のアカウントから自動生成された電子メールを受信できるように、PHPMailerを設定しようとしています。 Office 365アカウントにログインしましたが、PHPMailerに必要な設定は次のとおりです。

Host: smtp.office365.com
Port: 587
Auth: tls

これらの設定をPHPMailerに適用しましたが、メールは送信されません(私が呼び出す関数は、外部サーバー(Webページを提供するサーバーではない)から送信される独自のメールに対して正常に機能します)。

"Host"      => "smtp.office365.com",
"port"      => 587,
"auth"      => true,
"secure"    => "tls",
"username"  => "[email protected]",
"password"  => "clientpass",
"to"        => "myemail",
"from"      => "[email protected]",
"fromname"  => "clientname",
"subject"   => $subject,
"body"      => $body,
"altbody"   => $body,
"message"   => "",
"debug"     => false

PHPMailerがsmtp.office365.comを介して送信するために必要な設定を知っている人はいますか?

10
JosephGarrone

@nitinのコードは、SMTPSecureパラメーターに 'tls'がないため、機能していませんでした。

これが作業バージョンです。また、コメントアウトされた2行を追加しました。これは、何かが機能しない場合に使用できます。

<?php
require 'vendor/phpmailer/phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.office365.com';
$mail->Port       = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth   = true;
$mail->Username = '[email protected]';
$mail->Password = 'YourPassword';
$mail->SetFrom('[email protected]', 'FromEmail');
$mail->addAddress('[email protected]', 'ToEmail');
//$mail->SMTPDebug  = 3;
//$mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; //$mail->Debugoutput = 'echo';
$mail->IsHTML(true);

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}
17
bgazzera

これを試して、それは私のためにうまくいきます、私はこれを長い間使用しています

$mail = new PHPMailer(true);
$mail->Host = "smtp.office365.com";
$mail->Port       = 587;
$mail->SMTPSecure = '';
$mail->SMTPAuth   = true;
$mail->Username = "email";   
$mail->Password = "password";
$mail->SetFrom('email', 'Name');
$mail->addReplyTo('email', 'Name');
$mail->SMTPDebug  = 2;
$mail->IsHTML(true);
$mail->MsgHTML($message);
$mail->Send();
4

GmailからOffice365に移行したときにも同じ問題が発生しました。

最初にコネクタを設定する必要があります(オープンSMTPリレーまたはクライアント送信)。これを読むと、Office365が電子メールを送信できるようにするために知っておく必要があるすべての情報が表示されます。

https://technet.Microsoft.com/en-us/library/dn554323.aspx

2
Martin Stevens