フレームワークだと大抵組み込まれてるからいいんだけど、お問い合わせ等のメール送信だけなのにフレームワーク使うのは・・・ってときに。
目次
PHP/mail関数でメール:メールの文字コードをUTF-8で送信
PHPファイルの文字コード:UTF-8
改行コード:CRLF
<?php
mb_language("uni");
mb_internal_encoding("utf-8");
$subject = '件名です。';
$body = "本文です。
本文ですよ
本文
";
$from = 'from@example.com';
$from_name = '差出人';
$to = 'to@example.com';
$headers = [];
$headers[] = 'Content-Type: text/plain; charset=UTF-8';
$headers[] = 'Content-Transfer-Encoding: 8bit';
$headers[] = 'Mime-Version: 1.0';
$headers[] = 'From: %s<%s>', $from, $from_name;
$add_headers = implode("\n", $headers);
$subject = mb_encode_mimeheader($subject, 'ISO-2022-JP-MS');
mail($to, $subject, $body, $add_headers);
PHP/mail関数でメール:メールの文字コードをiso-2022-jpで送信
PHPファイルの文字コード:UTF-8
改行コード:CRLF
<?php
mb_language("uni");
mb_internal_encoding("utf-8");
$subject = '件名です。';
$body = "本文です。
本文ですよ
本文
";
$from = 'from@example.com';
$from_name = '差出人';
$to = 'to@example.com';
$headers = [];
$headers[] = 'Content-Type: text/plain; charset="iso-2022-jp"';
$headers[] = 'Content-Transfer-Encoding: 7bit';
$headers[] = 'Mime-Version: 1.0';
$headers[] = 'From: ' . mb_encode_mimeheader($from_name, 'ISO-2022-JP-MS', 'UTF-8') . '<' . $from . '>';
$add_headers = implode("\n", $headers);
$subject = mb_encode_mimeheader($subject, 'ISO-2022-JP-MS', 'UTF-8');
$body = mb_convert_encoding($body, 'ISO-2022-JP-MS', 'UTF-8');
mail($to, $subject, $body, $add_headers);
PHPメール送信ライブラリPHPMailerでGmail経由でメール送信
https://github.com/PHPMailer/PHPMailer
一昔前ならPEAR::MailだったけどイマドキはComposerだね。
// Composerでライブラリ追加
$ composer require phpmailer/phpmailer
// ディレクトリ構成
[project]
┣ vendor/
┣ composer.json
┣ composer.lock
┗ sample.php
PHPファイルの文字コード:UTF-8
改行コード:CRLF
sample.php
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
// サーバ設定
// デバッグモード( 0:OFF / 1:クライアントメッセージ / 2:クライアント&サーバメッセージ )
$mail->SMTPDebug = 0;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '*****@gmail.com';
$mail->Password = '*****';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
// 差出人
$from_name = mb_encode_mimeheader('差出人', "ISO-2022-JP-MS", "UTF-8");
$mail->setFrom('from@example.com', $from_name);
// 送信先
$to_name = mb_encode_mimeheader('送信先', "ISO-2022-JP-MS", "UTF-8");
$mail->addAddress('to@example.com', $to_name);
// 返信先
$reply_name = mb_encode_mimeheader('返信先', "ISO-2022-JP-MS", "UTF-8");
$mail->addReplyTo('reply@example.com', $reply_name);
// CC
// $mail->addCC('cc@example.com');
// BCC
// $mail->addBCC('bcc@example.com');
// 添付ファイル
// $mail->addAttachment('/var/tmp/file.tar.gz');
// $mail->addAttachment('/tmp/image.jpg', 'new.jpg');
//Content
$mail->isHTML(false);
$mail->Subject = mb_encode_mimeheader('これは件名です。', "ISO-2022-JP-MS", "UTF-8");
$mail->Body = "これは本文\nです。\n";
$mail->send();
echo '送信完了';
} catch (Exception $e) {
echo '送信失敗:', $mail->ErrorInfo;
}