【これだけ】PHPでのメール送信の方法【現役エンジニアが解説】
今回は、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というファイル名で添付したテキストメールを送信しています。