PHPMailer+Gmailによるユーザアカウント認証

Linphone(Flexisip)等の登録型アプリのユーザ認証方式をGmailのSMTPサーバを利用したEmail認証にするためPHPMailerを導入。Userfrostingには標準装備されていますが、Flexisipのアカウントマネージャーとして構築したxmlrpcサーバにも導入します。

自前のメールサーバを運用している場合は、PHPのmail関数によるsendmailを使用する方法が一般的です。

PHPMailer

リファレンス
http://phpmailer.github.io/PHPMailer/classes/PHPMailer.PHPMailer.PHPMailer.html

必要な機能だけを盛込んだファイルだけをアプリのフォルダにコピーするだけでインストールできますが、ソースとなるファイルが少ないのでComposerによりインストールします。

サーバのルートフォルダ(Flexisipのxmlrpcサーバ)で以下コマンドを実行します。

$ sudo composer require phpmailer/phpmailer

GmailのSMTPサーバを利用したサンプルコードが用意されています。

Gmailの2段階認証を利用する場合には、PHP拡張モジュールが必要となるので、GithubのComposer.jsonの中身も確認して下さい。

Flexisipのアカウントマネージャーへの導入方法についてはブログ記事で報告します。

カスタムヘッダー追加によるContent-Type: multipart/alternativeの設定(Textとhtmlフォーマットによる送信)

$limite = "_----------=_parties_".md5(uniqid (rand()));
$mail->addCustomHeader('Content-Type: multipart/alternative; boundary="'.$limite.'"');

$message = "";

	$message .= "--".$limite."\n";
	$message .= "Content-Type: text/plain; charset=\"utf-8\"\n";
	$message .= "Content-Transfer-Encoding: 8bit\n\n";
	$message .= $text;

	$message .= "\n\n--".$limite."\n";
	$message .= "Content-Type: text/html; charset=\"utf-8\"\n";
	$message .= "Content-Transfer-Encoding: 8bit;\n\n";
	$message .= $html;

	$message .= "\n--".$limite."--";