[PHP]お問い合わせFormでMailを送信するLibrary
HTMLで作ったFormからEmailを送信するのを作ってほしいと頼まれたときのMemo.
まずはServer上のPHP versionとMailが送信できるか確認。
Emailを送信するSample
<?php
$to = 'hoge@hoge.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: noreply@hoge.com';mail($to, $subject, $message, $headers);
//mail($to, $subject, $message);
?>
Mailを送信するPHP Libraryはたくさんあるけど、Wordpressでも使っているPHPMailerを使うことにした。Wordpressでは
wp-includes/class-phpmailer.php
wp-includes/pluggable.phpのwp_mail
を読めば参考になる。
単純な使い方は下記のような感じ。使ったのはPHPMailer Lite v5.1
define('MAIL_TO', 'hoge@hoge.com');
define('MAIL_FROM', 'noreply@hoge.com');
//error_reporting(E_ALL);
if ($_POST && strpos($_SERVER['HTTP_REFERER'], 'hoge.com')) {
require_once('./PHPMailer-Lite/class.phpmailer-lite.php');
$mail = new PHPMailerLite();
$mail->IsMail(); // telling the class to use native PHP mail()
$mail->SetFrom(MAIL_FROM);
$mail->AddAddress(MAIL_TO);
$mail->Subject = 'Contact from Website';
$body = get_message($_POST);
$mail->Body = strip_tags($body);
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
}
spamに利用されないように同じdomainかどうかはcheckした方がいい。
if (!strpos($_SERVER['HTTP_REFERER'],'hoge.com')) {
//error
}
SecurimageなどのPHP Libraryを併用すればさらに安心。
< Related Posts >