【これだけ】PHPでのメール送信の方法【現役エンジニアが解説】

PROGRAM

今回は、PHPでのメール送信の方法について、テキストメールとHTMLメールの場合に分け、簡単に解説していきます。

テキストメールを送信する方法

PHPでテキストメールを送信するには、mb_send_mail()という標準関数を使います。

mb_send_mail()では、内部の文字エンコードのままで文章をメールで送信することができます。

mb_language("Japanese");
mb_internal_encoding("UTF-8");

$to = "to@hoge.com";
$subject = "テキストメール";
$message = "テキストメールです。\r\n文字の装飾は一切ありません。";
$headers = "From: from@hoge.com";
mb_send_mail($to, $subject, $message, $headers); 

上記のコードでは、UTF-8の文字エンコードで”to@hoge.com”宛のテキストメールを送信しています。

HTMLメールを送信する方法

PHPでHTMLメールを送信する際も、テキストメール同様にmb_send_mail()という標準関数が使えます。

テキストメールと同じ要領で、メール本文にHTMLのソースコードを書くだけでHTMLメールを送ることができます。

mb_language("Japanese");
mb_internal_encoding("UTF-8");

$to = "to@hoge.com";
$subject = "HTMLメール";
$message = "<html><body><h1>HTMLメールです。</h1></body></html>";
$headers = "From: from@hoge.com";
$headers .= "\r\n";
$headers .= "Content-type: text/html; charset=\"UTF-8\"";
mb_send_mail($to, $subject, $message, $headers);

上記のコードでは、”HTMLメールです。”という見出しのみの簡単なHTMLメールを”to@hoge.com”宛に送信しています。

ファイルを添付する方法

メール送信では、しばしばファイルを添付したいときがあると思います。

PHPでは添付ファイル付きのメールを送る際もmb_send_mail()の標準関数が使えますが、”Content-Type”を”multipart/mixed”にする必要があります。

mb_language("Japanese");
mb_internal_encoding("UTF-8");

$to = "to@hoge.com";
$subject = "添付ファイル付きテキストメール";
$message = "添付ファイル付きのテキストメールです。\r\n文字の装飾は一切ありませんが、添付ファイルを送れます。";

$headers = "Content-Type: multipart/mixed;boundary=\"__BOUNDARY__\"\n";
$headers .= "From: from@hoge.com";

$body = "--__BOUNDARY__\n";
$body .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n\n";
$body .= $message . "\n";
$body .= "--__BOUNDARY__\n";

$file_path = "/tmp/test.pdf";
$file_name = "test.pdf";

$body .= "Content-Type: application/octet-stream; name=\"{$file_name}\"\n";
$body .= "Content-Disposition: attachment; filename=\"{$file_name}\"\n";
$body .= "Content-Transfer-Encoding: base64\n";
$body .= "\n";
$body .= chunk_split(base64_encode(file_get_contents($file_path)));
$body .= "--__BOUNDARY__\n";

mb_send_mail($to, $subject, $body, $headers);

上記のコードでは、”to@hoge.com”宛に$file_pathで指定したパスにあるPDFファイルを$file_nameというファイル名で添付したテキストメールを送信しています。