質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

2657閲覧

mb_send_mail メール送信者項目の文字化けを直したい

takasports

総合スコア5

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/06/22 07:45

編集2021/06/23 05:26

mb_send_mailを使って、お客様フォームから受付完了メールを自動送信するシステムを作りました。

headerにて送信者関するコードを記載したところ、
メールタイトル項目(上段にある送信者のみの項目)の送信者(日本語のみ)が文字化けします。
gメールでは化けませんが、outlookでは化けます。
本文やその他は、文字化けしません。

メールタイトル項目の送信者の文字化けをしないコードをお教え願います。

php

1function send_form(){ 2 global $name; 3 global $email; 4 global $tel; 5 global $zipcode; 6 global $address; 7 global $attribute; 8 global $comment; 9 global $mytime; 10 11 $user_input = array($mytime,$name,$email,$tel,$zipcode,$address,$attribute,$comment); 12 mb_convert_variables("SJIS","UTF-8",$user_input); 13 $fh = fopen("user.csv","a"); 14 flock($fh,LOCK_EX); 15 fputcsv($fh, $user_input); 16 flock($fh,LOCK_UN); 17 fclose($fh); 18 19 #テンプレート読み込み 20 $conf = fopen("tmpl/send.tmpl","r") or die; 21 $size = filesize("tmpl/send.tmpl"); 22 $data = fread($conf , $size); 23 fclose($conf); 24 25 #メール送信の処理 26 mb_language("Japanese"); 27 mb_internal_encoding("UTF-8"); 28 // 送信元 29 $from = "日本語<info@111net>"; 30 // 送信元メールアドレス 31 $from_mail = "info@111net"; 32 // 送信者名 33 $from_name = "日本語"; 34 // 送信者情報の設定 35 $header = ""; 36 $header .= "Content-Type: text/plain \r\n"; 37 $header .= "Return-Path: " . $from_mail . " \r\n"; 38 $header .= "From: " . $from ." \r\n"; 39 $header .= "Sender: " . $from ." \r\n"; 40 $header .= "Reply-To: " . $from_mail . " \r\n"; 41 $header .= "Organization: " . $from_name . " \r\n"; 42 $header .= "X-Sender: " . $from_mail . " \r\n"; 43 $header .= "X-Priority: 3 \r\n"; 44 45 mb_send_mail("info@111net",'お問合せを受け付けました。',"【お問合せ者】\r\n$name\r\n【メールアドレス】\r\n$email\r\n【電話番号】\r\n$tel\r\n【お問い合わせ内容】\r\n".$comment); 46 mb_send_mail($email,'【○○】お問合せを受け付けました。',"━━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n"."\r\n【○○】お問合せを受け付けました。\r\n"."\r\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━\r\n"."\r\n\r\n".$name." 様\r\n"."\r\nお問い合わせくださいまして、誠にありがとうございます。\r\n"."\r\nお問い合わせ内容を確認の上、回答いたします。\r\n"."\r\nいましばらくお待ちくださいますようお願いいたします。\r\n"."\r\n(このメールは、受付完了の自動配信メールです。)\r\n"."\r\n--------------------------------------------------\r\n"."\r\n○○",$headers); 47 48 #文字置き換え 49 global $toppage; 50 $data = str_replace("!top!", $toppage, $data); 51 52 #表示 53 echo $data; 54 echo $mytime; 55 exit; 56} 57

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

メールヘッダ部に日本語を含める場合はmb_encode_mimeheaderを使ってみてください。

PHPで日本語のメールを送信する時のおさらい - Qiita

投稿2021/06/22 07:55

itagagaki

総合スコア8402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasports

2021/06/22 09:18

ご回答ありがとうございます。 ご指摘いただいた内容を踏まえコードを追記しました。(コード再編集しました。) 文字化けは治りましたが、送信者が2回出てきてしまい、後者は文字化けしてしまいます。 日本語<info@oo.net> > <繧ォ繝医え蝠・コ・<info@oo.net> 更なる、アドバイスをいただけましたら幸いです。
itagagaki

2021/06/22 10:10

$from がシンプルなアドレスではなく日本語を含んでいるからではないですか?
takasports

2021/06/22 11:42

アドバイスありがとうございます。
guest

0

自己解決

送信元の項目を下記のように修正。
メール送信元項目の文字化け解消しました。```php
$from = mb_encode_mimeheader( "日本語" ) ."info@111net";

投稿2021/06/23 05:34

takasports

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ちゃんとやるならJIS変換してBASE64でエンコードして下さい

投稿2021/06/22 07:59

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasports

2021/06/22 09:05

ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問