【php】添付ファイルのメール送信が実現できない

実現したいこと

自作でphpのメールフォームを実現したい。
以下、進捗状況

  • テキストベースの送信 済
  • 確認画面 済
  • 添付ファイルをフォルダ内にアップロード 済
  • 添付ファイルの送信 未

発生している問題・分からないこと

MailHogのMINE内に添付ファイルが届かない。

該当のソースコード

php

1<?php2// メール送信のファイル3 4// 変数一覧5$header = null;6$body = null;7$reply_subject = null;8$reply_text = null;9$notice_subject = null;10$notice_text = null;11 12// メールヘッダー情報13$header = "MIME-Version: 1.0\n";14$header .= "Content-Type: multipart/mixed;boundary=\"__BOUNDARY__\"\n";15// $header .= "Content-Type: text/plain;charset=UTF-8\n";16$header .= "From: <example@example.com>\n";17$header .= "Reply-To: <example@example.com>\n";18 19// 自動返信メール件名20$reply_subject = "お問い合わせいただきありがとうございます";21 22// 自動返信メール本文23$reply_text = "下記の内容でお問い合わせを受け付けました。"."\n\n";24$reply_text .= "お問い合わせ受付日時:".date('Y-m-d H:i')."\n";25$reply_text .= "選択ボックス:".$esc['box']."\n";26$reply_text .= "お名前:".$esc['fullname']."\n";27$reply_text .= "メールアドレス:".$esc['email']."\n";28$reply_text .= "電話番号:".$esc['tel']."\n";29$reply_text .= "お問い合わせ内容:".$esc['message']."\n\n";30$reply_text .= "送信元: ホームページ管理者<example@example.com>";31 32// 自動返信メールの送信33mail($esc['email'], $reply_subject, $reply_text, $header);34 35// 管理者通知メールの件名36$notice_subject = "ホームページからメッセージがありました";37 38// 管理者通知メールの本文39$notice_text = "下記の内容でお問い合わせを受け付けました。"."\n\n";40$notice_text .= "お問い合わせ受付日時:".date('Y-m-d H:i')."\n";41$notice_text .= "選択ボックス:".$esc['box']."\n";42$notice_text .= "お名前:".$esc['fullname']."\n";43$notice_text .= "メールアドレス:".$esc['email']."\n";44$notice_text .= "電話番号:".$esc['tel']."\n";45$notice_text .= "お問い合わせ内容:".$esc['message']."\n";46$notice_text .= "プライバシーポリシー:".$esc['agree']."\n";47 48// テキストメッセージをセット49$body = "--__BOUNDARY__\n";50$body .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n\n";51$body .= $notice_text . "\n";52$body .= "--__BOUNDARY__\n";53 54// ファイルを添付55if( !empty($esc['attachment_file']) ) {56 $body .= "Content-Type: application/octet-stream; name=\"{$esc['attachment_file']}\"\n";57 $body .= "Content-Disposition: attachment; filename=\"{$esc['attachment_file']}\"\n";58 $body .= "Content-Transfer-Encoding: base64\n";59 $body .= "\n";60 $body .= chunk_split(base64_encode(file_get_contents(FILE_DIR.$esc['attachment_file'])));61 $body .= "--__BOUNDARY__\n";62}63 64// 管理者通知メールの送信65mail('example@example.com', $notice_subject, $body, $header);

試したこと・調べたこと

上記の詳細・結果

参考にした記事はこちら
https://gray-code.com/php/make-the-form-vol9/

まず初めにMailHogで本当に添付ファイルが送れたことを確認するために
ContactForm7でテストし、無事に届くことは確認。

補足

環境

  • WordPressローカル構築のLocal - MailHog

コード全文
GitHub

環境構築

  • LocalにてWordPress構築
  • このテーマファイルを入れる
  • 固定ページにcontact追加(パーマリンクボタンを必ず押す)
  • public直下に「/strage/mail/」フォルダを入れる(この場所に添付ファイルが入るようにしています)

コメントを投稿

0 コメント