Mail クラスは、PHP の mb_send_mail を利用してメール送信を行うユーティリティクラスである。
送信先、件名、本文、送信元のヘッダーを指定してメールを送信できる。
1. コード
<?php
namespace app\aura\utils;
class Mail{
/**
* sendMail
* @param array $post_data
* @return boolean $result
*/
function sendMail($post_data){
$result = false;
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$to = $post_data['mail'];
if (!filter_var($to, FILTER_VALIDATE_EMAIL)) {
echo "Invalid email address.";
return;
}
$title = 'Letter from '.$post_data['username'];
$message = $post_data['comment'];
$headers = 'From:'. $post_data['mail'];
if(mb_send_mail($to, $title, $message, $headers)){
$result = true;
echo "Email successfully sent.";
}else{
echo "Email transmission failed.";
}
return $result;
}
}
?>
2. コード説明
- 名前空間
namespace app\aura\utils;app\aura\utils下に Mail クラスを定義 - メソッド
function sendMail($post_data)$post_data: 送信データの連想配列'mail': 送信先メールアドレス'username': 送信者名'comment': メール本文
- メールアドレスが不正な場合は送信せずメッセージを出力
- 日本語メール用に
mb_languageとmb_internal_encodingを設定 mb_send_mailで送信- 成功時は
true、失敗時はfalseを返す
3. 使い方 / 利用例
■ フォームデータ例
<form method="post" action="/send">
<input type="text" name="username" placeholder="Your name">
<input type="email" name="mail" placeholder="Your email">
<textarea name="comment"></textarea>
<button type="submit">Send</button>
</form>
■ サービスクラス内での使用例
use app\aura\utils\Mail;
$mailUtil = new Mail();
$post_data = [
'username' => $_POST['username'],
'mail' => $_POST['mail'],
'comment' => $_POST['comment']
];
if ($mailUtil->sendMail($post_data)) {
echo 'メール送信成功';
} else {
echo 'メール送信失敗';
}
- ポイント
$post_data配列に必要なキーを必ず含めること- メールアドレスは
filter_varによって検証される - 日本語を含む場合は
mb_languageとmb_internal_encodingの設定を維持