PHPMailerのログ出力をSyslogにする

post-063-img-0001

PHPMailerのログ出力をSyslogにする

PHPからメールを送信する際に便利なPhpMailerですが、デフォルトではログがHTML画面上に出力されてしまいますので具合が悪いです。そこで今回は、PHP Mailerのデバッグ出力をSYSLOGで出す方法を解説します。

コード

百聞は一見にしかずなので、まずは該当部分のコードを見ていきましょう。

$mail->Debugoutput = function($str, $level) { syslog(LOG_ERR, "PHP Mailer:" . $str); };

これだけです♬ 簡単ですね。

一応動作確認できたソースを掲載

一応、動作確認で使ったコードを掲載しておきます。GmailのSMTP経由で送っていますので、事前にウエブブラウザでGmailにログインし、メニューの「Sign-in & security」 から 「Apps with account access」を選択し、その画面の下のほうの「Allow less secure apps:」 をONにしておかないと送信できません~。

require_once("PHPMailer-5.2-stable/PHPMailerAutoload.php" ) ;

$param = Array() ;
$param["subject"] = "タイトル";
$param["body"] = "メール本文";
$param["from_name"] = "送りぬし様";
$param["from_addr"] = "sample-source@gmail.com";
$param["smtp_username"] = "sample-source@gmail.com";
$param["smtp_password"] = "sample-pass";
$param["to_addr"] = "sample@sample-source.com";
$param["to_name"] = "あて先さま";
sub_send_mail( $param ) ;

// ****************************************************************************
//	テキストメールの送信
// ****************************************************************************
function sub_send_mail($params)
{
	$mail = new PHPMailer();
	$mail->Debugoutput = function($str, $level) { sub_logwrite("PHP Mailer:" . $str); };
	$mail->IsSMTP();
	$mail->SMTPDebug  = 1; // debugging: 1 = errors and messages, 2 = messages only
	$mail->SMTPAuth   = true;
	$mail->CharSet    = 'utf-8';
	$mail->SMTPSecure = 'tls';
	$mail->Host       = "smtp.gmail.com";
	$mail->Port       = 587;
	$mail->IsHTML(false);
	$mail->ContentType = 'text/plain';
	$mail->Username = $params["smtp_username"];
	$mail->Password = $params["smtp_password"]; 
	$mail->SetFrom($params["from_addr"], $params["from_name"]);
	$mail->addReplyTo($params["from_addr"]);
	$mail->Subject  = $params["subject"];
	$mail->Body     = $params["body"];
	$mail->AddAddress($params["to_addr"],$params["to_name"]);

	if( !$mail->Send() )
	{
		return false;  // Error
	}

	return true ;
}

// ****************************************************************************
//	SYSLOGを出力する
// ****************************************************************************
function sub_logwrite($log)
{
	syslog(LOG_ERR, $log);
}
タイトルとURLをコピーしました