[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 >

【PHP】Zend_Mailを使ってメールを送信する(SMTP)(日本語対応)