PHPのMailライブラリに関して。
今までmb_send_mailとかで誤魔化してましたが、以下のようにライブラリで送るケースのサンプル。
https://github.com/umanari145/mail_sample
ソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<?php require_once __DIR__ . "/vendor/autoload.php"; require_once "config.php"; use PHPMailer\PHPMailer\PHPMailer; try { $mail = new PHPMailer(true); $mail->CharSet = "UTF-8"; $mail->isSMTP(); $mail->SMTPDebug = 2; $mail->Host = SMTP_SERVER; $mail->SMTPAuth = true; $mail->Username = MAIL_USER_NAME; $mail->Password = MAIL_PASSWORD; $mail->SMTPSecure = 'CRAM-MD5'; $mail->Port = MAIL_PORT; $mail->From = FROM_ADDRESS; $mail->addAddress('umanari145@gmail.com'); //$mail->addCC(); //$mail->addBCC(); $subject = '【ご連絡】ご挨拶メールを送らせていただいております。'; $body = <<< EOF 本日は晴天なり EOF; $mail->isHTML(false); $mail->FromName = mb_encode_mimeheader("サンプルメール", "ISO-2022-JP", "UTF-8"); $mail->Subject = mb_encode_mimeheader($subject, "ISO-2022-JP", "UTF-8"); $mail->Body = $body; $mail->send(); echo 'mail send success!'; } catch (Exception $e) { echo 'mail send failed!' . $mail->ErrorInfo; } |
メモ
メールの仕組みに関しての注意書き
- メールサーバーを自力で立てるのはやめた方が良さそう。ロリポなどでメールのサーバーだけ受けるのがいいかも。
- 外部からつなぐときはSMTP-AUTHが必須になるケースが多いので、契約しているメールサーバーの説明などを読んでおくこと。
- SMTPSecureの種類に注意
- mime_encode_mimeheaderでFromとSubjectをエンコーディング化
参考リンク
ロリポの設定なども書いてある
エンコーディングに関する情報