Microsoft CommunityにPHPからOffice 365経由でメール送信する方法についての質問がありました。
これまでPHPからメール送信したことはありましたが、Office 365のSMTPサーバーを経由して送信したことは無かったので、良い機会なので私も試してみることにしました
PHPMailerの使用
メール送信には定番の「PHPMailer」を使います。
使い方は簡単で、GitHubからzipファイルをダウンロード・解凍して、「PHPMailerAutoload.php」ファイルを読み込むだけです。
サーバー情報
認証時に必要となるサーバー情報は下記サポートページに記載されています。
・一般法人向け Office 365 用の Outlook POP および Outlook IMAP の設定 – Office のサポート
https://support.office.com/ja-jp/article/7fc677eb-2491-4cbc-8153-8e7113525f6c
メール送信を行うので、使うのはSMTPサーバーだけですね。
smtp.office365.com : 587ポート(TLS)
PHPMailerを使ってOffice 365のSMTP経由でメール送信するコード
さっそく書いたのが下記コードになります。
※ ユーザー名やパスワード、本文や宛先など、必要に応じて変更する必要があります。
<?php
error_reporting(E_ALL & ~E_NOTICE);
require_once "./PHPMailer/PHPMailerAutoload.php"; //ライブラリー読込
//認証情報
$host = "smtp.office365.com";
$smtp_user = "user@***.onmicrosoft.com";
$smtp_password = "*****";
$from = "user@***.onmicrosoft.com";
$fromname = "テスト差出人";
//宛先・件名・本文
$to = "user@***.onmicrosoft.com";
$subject = "テストメール";
$body = "メール本文\nあいうえお\nABCDEFG";
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPDebug = 2;
$mail->CharSet = "utf-8";
$mail->SMTPSecure = "tls";
$mail->Host = $host;
$mail->Port = 587;
$mail->IsHTML(false);
$mail->Username = $smtp_user;
$mail->Password = $smtp_password;
$mail->SetFrom($smtp_user);
$mail->From = $fromaddress;
$mail->FromName = $fromname;
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AddAddress($to);
if(!$mail->Send()){
echo "Error : " . $mailer->ErrorInfo;
}
送信結果
上記コードを実行すると、特に問題なくメールが送信され、下図のように無事に受信できることも確認しました。

こんな短いコードで外部のメールサーバーからメール送信できる「PHPMailer」はホント便利だと思います。




















この記事へのコメントはありません。