mb_send_mailでHTMLメールを送信すると
受信メールのヘッダ情報が勝手に追加されてしまいます。

【PHP内で指定しているヘッダ】
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-2022-jp' . "\r\nX-Mailer: PHP/".phpversion();

【受信メールのヘッダ情報】
Mime-Version: 1.0
Mime-Version: 1.0
Content-Type: text/html; charset=iso-2022-jp
Content-Type: text/plain; charset=ISO-2022-JP
というように、指定もしてないContent-Type: text/plainが
追加されたり、Receivedも同じように勝手に追加されてしまいます。

考えられる原因を教えていただけますか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

mb_send_mail()は、細かいエンコーディングの調整ができないので、どうしても文字化けしがちです。


なので、件名や本文など、日本語が入る項目を個別にエンコーディング変換してからmail()関数に渡すのがオススメです。面倒ですが。
色々試した結果、下記のようにしたら文字化けはなくなりました。(もしかしたら、余分なものもあるかも知れませんが)

1. FROM
日本語名の部分をISO-2022-JPに変換、アドレス部分を追加してからMIME変換

2. SUBJECT
ISO-2022-JPに変換してからBase64に変換

3. 本文
ISO-2022-JPに変換

各変換は下記の関数を使いました。

ISO-2022-JPへの変換
  →mb_convert_encoding()

Base64への変換
  →base64_encode()

MIMEへの変換
  →mb_encode_mimeheader()
    • good
    • 0
この回答へのお礼

ありがとうございます。

教えていただいた方法で試した結果、
本文は、バッチリ文字化けが解消されました。

FROMは日本語を使わなかったので、まだ試してません。
SUBJECTは文字化けが起こってしまったのですが、
mb_encode_mimeheader($subject, "ISO-2022-JP", "Q")にしたら
解決しました。

おかげで勉強になりました。
ありがとうございます!

お礼日時:2009/05/18 18:37

なんともいえませんが、mail()コマンドでもおなじ症状ですか?

    • good
    • 0
この回答へのお礼

ありがとうございます。
mail()だと上記のような現象は起きないのですが、
日本語が件名、本文ともに文字化けしてしまいます。
文字化けしないのであれば、mail()でももちろん構いません。
文字化け解除に断念して、mb_send_mail にしました。

お礼日時:2009/05/18 17:07

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qメールの書き方の昨今

メールの書き方、昔と今で変わっていますか?。

私がメールをやるようになったころは、

 ○○(差出人)です。
 本文(できるだけ簡潔に。長文を詫びる。)

という書き方が多かったように思います。
このごろでは

 △△(宛先)さま
 本文(長い。顔文字とかも入る。)
       ○○(差出人)

という書き方をよく見かけます。

高速、大容量の時代ですから、本文が長くなるのは当然の変化だと思います。
一方、宛先を最初に書いて差出人を最後に書くというのは思いがけない変化と感じているのですが、メールでの宛先や差出人の書き方の作法、その昨今での変化というものはあるのでしょうか。

よろしくお願いします。

Aベストアンサー

私の身のまわりでは、パソコンのメールでも最初に名乗る人って
滅多に居ませんね。私は必ず名乗りますが・・・

ビジネスの場合、たまに「○○さんへ」というのは書きます。
これは内緒で上司にBCCで送る場合、一瞬上司が「なんでこんな
メールが?!」と、特に携帯メールで受信した(転送している)場合、
意味がわからないんですが、「○○さんへ」と書いてると、自分に
宛てたものではないけど、BCCで送ってくれたものだな、と判断
できるからです。

友人同士のメールの場合、それほどマナーは気にしませんが
「こんにちは」とかのタイトル、多いですね。
タイトルで読む順番を変えるほどメールは大量にこないのですが
タイトルってけっこう大切だと私は思っています。

QheaderのContent-Typeの出力制御

お世話になります。
PHPの問題なのか、Apacheの問題なのか分かりかねましたので、とりあえずPHPのカテゴリーに質問させて頂きます。


■問題点
mmfファイルにアクセスしているように見せかけてPHPを実行するプログラムにおいて、Headerの出力として"Content-Type:application/x-smaf" だけ出力したいのだが、"Content-Type: text/html; charset=Shift_JIS" も同時に出力されてしまう。


■出力されるHeader(一部修正しています)
HTTP/1.1 200 OK
Date: Wed, 25 May 2005 01:46:37 GMT
Server: Apache/1.3.27 (Unix)
X-Powered-By: PHP/4.3.6
Accept-Ranges: bytes
Content-Type:application/x-smaf
Content-length:11212
Connection: close
Content-Type: text/html; charset=Shift_JIS
(↑この一行が邪魔)


■PHPプログラム
拡張子mmf(smafファイル)でphpを実行し、smafファイルを出力する。

<?php
$melody_file = "hoge.mmf";
$melody_filesize = @filesize( $melody_file );
$fd = fopen ($melody_file, "rb");
$contents = fread ($fd, $melody_filesize );
fclose ($fd);
header("Content-Type:application/x-smaf\nContent-length:${melody_filesize}\n\n");
echo $contents;
?>


■Apache設定
AddType application/x-httpd-php .php .php4 .php3 .phtml .mmf


■動作環境
ReadHat7.2
Apache 1.3.27
PHP 4.3.6


上記の件につきまして、対応方法をご存知の方がいらっしゃいましたら宜しくお願いいたします。

お世話になります。
PHPの問題なのか、Apacheの問題なのか分かりかねましたので、とりあえずPHPのカテゴリーに質問させて頂きます。


■問題点
mmfファイルにアクセスしているように見せかけてPHPを実行するプログラムにおいて、Headerの出力として"Content-Type:application/x-smaf" だけ出力したいのだが、"Content-Type: text/html; charset=Shift_JIS" も同時に出力されてしまう。


■出力されるHeader(一部修正しています)
HTTP/1.1 200 OK
Date: Wed, 25 May 2005 01:46:37 GMT
Server: Apache...続きを読む

Aベストアンサー

プログラムのどこかで文字列を出力してしまっているという事はないですよね?意図的に文字列を出力してなくても、例えばプログラムの<? ?>の外側に改行が入っていたり(インクルードされてるファイルもあればそれも)すると、改行がブラウザに送られてしまいます。
文字列がブラウザに送られると、このヘッダが自動で付くようです。

Q中途採用の面接での返信メールの正しい書き方

中途採用の面接での返信メールの正しい書き方

中途採用で履歴書を送ったところ、面接のお知らせが来たのですが、ご都合のいい日を教えて下さい。
とのことなのですが、どういった書き方が正しいのでしょうか?
それとも、そこまで深く考えず普通にメールを返信すればよろしいのでしょうか?

ご教授お願いします。

Aベストアンサー

常識の範囲で大丈夫です。
メールですから手紙のような形式ではなくビジネスメールの形式と言うものがあります。

件名はRe:付きの方がどの件だか分かるとか、貰ったメールを消さないほうが分かっていいという人もいるのでどちらでも失礼という事はないでしょう。用は一目でどの件だか分かればいいわけです。
ご自身の気持ちで丁寧で一目で理解できるものだと思うほうを選べばいいと思います。

宛名は送信者の名前が分かっていてその方に返信するなら、部署名とその方の名前を記述します。御中と様の使い方は手紙と同じです。

手紙にある時候の挨拶や拝啓などは不要。メールの場合は、相手に時間を掛けさせずに内容を伝える事も大事です。できるだけスクロールさせずにおさまる程度全体的に画面1つか、せいぜい1回スクロール程度におさまる長さにします。手紙にある時候の挨拶や拝啓は、ビジネスでは書面の時のみです。

まず、書類選考とメール送信に関するお礼を述べます。
それからすぐに本題に入ってかまいません。都合のいい日は相手の都合もあるので第3候補くらいまで記述していると余計な手間が掛からないと思います。
何か聞きたい事があるなら質問します。

一言添えて、自身の氏名で締めます。

「ビジネスメールの書き方」、「メール 転職」などのキーワードで検索すると書き方のヒントがたくさん見つかるでしょう。
よほど失礼に当たる文章、意味が理解できない文章、あて先が間違っているなどでもない限り、大きな問題にはなりません。ビジネスマナーの範囲で書けば大丈夫です。

あと、できれば使用するメールアドレスは氏名を使用するなど相手が確認しやすいもので、恥ずかしくないものがいいです。以前、就職の応募者のメールで「love」とか「happy」とか「whiterose」とか「sexy」とか使っているものがたまにあって常識を疑われていたのと、笑い話になってしまいます。

常識の範囲で大丈夫です。
メールですから手紙のような形式ではなくビジネスメールの形式と言うものがあります。

件名はRe:付きの方がどの件だか分かるとか、貰ったメールを消さないほうが分かっていいという人もいるのでどちらでも失礼という事はないでしょう。用は一目でどの件だか分かればいいわけです。
ご自身の気持ちで丁寧で一目で理解できるものだと思うほうを選べばいいと思います。

宛名は送信者の名前が分かっていてその方に返信するなら、部署名とその方の名前を記述します。御中と様の使い方は手紙...続きを読む

Qheader('Content-type: ima

header('Content-type: image/jpeg');
echo $img->createResizedImage(100, 100);

で画像として出力しているのですが、
単独の画像ではなく(?)
HTMLの中の画像として出力するにはどうすれば良いですか?

具体的には、ブラウザへ出力する際、HTMLのソースと同じように<html><body>画像</body></html>で出力したいです

Aベストアンサー

$src = 'data:image/jpeg;base64,' . base64_encode($img->createResizedImage(100, 100));

以上をimgタグのsrc属性にどうぞ

Q女の子の文字の書き方・メールなどの書き方

高校の研究課題で私は「女の子の文字・メールについて」と言う課題を
考えています。女友達に聞いたのですが
よくわからないとの答えでした。そこで皆さんにお聞きしますが
女の子の文字はなんとなく
丸いと言うか男の方の書く文字とどこか違いますよね?
その女の子の文字の書き方を教えていただけませんか?

ほかにもメールなどをしていると
「いちおう→ぃちょう」などと変換されていたりなどしますよね?
こちらの女の子の書くメールの書き方などを教えていただきたいのです。

Aベストアンサー

年齢的に女の子に入るので答えさせていただきます^^
女の子といっても十人十色で、書き方はさまざまですよ。
 
>丸いと言うか男の方の書く文字とどこか違いますよね?
>その女の子の文字の書き方を教えていただけませんか?
確かにそうですね。男の方の丸文字を時々見かけますが、女の子に多いですね。私もそうです。特に意識しているわけじゃないので、自然に書いているという感じですかね。私の場合は、前に丸文字を見た時に「かわいい~」と思ったので、その影響が少なからずあるとは思います。
 
>「いちおう→ぃちょう」などと変換されていたりなどしますよね?
これもさまざまで、特にきまりはないんです。その時の気分や、その人の個性で変換するか決めていると思います。女の子でも「小文字が多いの苦手だなぁ」という人は、ほとんど変換することなくメールを書きます。逆に「こういう書き方はかわいいし、読みやすい」と思っている方はたくさん変換して書くと思いますよ。
 
私の身近で多いのは、
「おはよう」→「ぉはよう」
「そうだよね」→「そぅだよねぇ」
でしょうか。本当にさまざまです。
 
小文字がすごく好きな方は、変換できる限りの文字を、全て小文字にして送ってきますよ。

年齢的に女の子に入るので答えさせていただきます^^
女の子といっても十人十色で、書き方はさまざまですよ。
 
>丸いと言うか男の方の書く文字とどこか違いますよね?
>その女の子の文字の書き方を教えていただけませんか?
確かにそうですね。男の方の丸文字を時々見かけますが、女の子に多いですね。私もそうです。特に意識しているわけじゃないので、自然に書いているという感じですかね。私の場合は、前に丸文字を見た時に「かわいい~」と思ったので、その影響が少なからずあるとは思います。
 
>「...続きを読む

Qprint "\n";の0.pingの0てなんでしょうか?

以下のprint "<img src=\"0.jpg\/>\n";の0てなんでしょうか?
 ファイル名でしょうか?以下プログラムです。
  よろしくお願いいたします。(馬鹿な質問ばかりですみません_ _)
<!DOCTYPE html>
<html>
<head>
<title>P121 指定した多数の画像を出力する 5-4</title>
</head>
<body>

<?php

$num = 10;

for($i=0; $i<$num; $i++){
print "<img src=\"0.jpg\/>\n";
}

?>

</body>
</html>

Aベストアンサー

>print "<img src=\"0.jpg\/>\n";
この行は間違っていますが、何かの参考書から引用したものですか?
元の物とよく見比べてみてください。
これでは、正常なHTML文は作成出来ません。

問題の意味が不明ですが、これをみると「0.jpg」と言う画像ファイルで、仰るとおり「ファイル名」です。
しかし、上記のように間違っているものなので、本来「ファイル名」なのか疑問です。

Qビジネスのメールの書き方

ときどき、全国の販売会社の担当者あてにメールを送信しています。
本文の最初に「いつもお世話になっております。」といつも書くのですが、
先日、この書き方を指摘されました。
この文句は男性が使うものだ!と。では、女性は何を使えばいいのでしょうか?
「いつもお世話様です」ですか?何がどうまずいのか、理解できないのですが、
どなたか教えてください。
それと、文章自体が苦手なので、ビジネスメールの書き方の参考になるサイトなどがありましたら、教えてください。お願いします。

Aベストアンサー

>「いつもお世話になっております。」
男性も、女性も区別などありません、これで充分です。
ビジネスメールは、簡単明瞭・簡潔が命です。

下記のページを参考にしてください。

ビジネスメールの書き方
http://homepage1.nifty.com/event-go/doc/e-mail.htm

ビジネスメールが書けますか?
http://www.will-way.com/prosoho/check_mail.htm

仕事で使えるビジネスメールの書き方 リンク集http://allabout.co.jp/computer/email/subject/msub_bm.htm?FM=mc

QRE:\r\nと\nの違い?

下記スレッド
http://oshiete1.goo.ne.jp/qa4137451.html
で以下のような質問をしていたのですが、
<質問開始>
よくメールフォームの本文部分やヘッダー部分の改行などで\r\n又は\nが使用されていますが、\r\nと\nは何が違うのでしょうか?

どちらも通常の改行のように思えますが。
<質問終了>
途中で質疑応答が途切れてしまいました。

上記の質問への回答から、私の理解は以下のようになりますが、私の理解は正しいのでしょうか?
<私の理解開始>
TinyPineさん
ご回答、ありがとうございました。

つまり、PHPにおけるmail関数のメッセージ組み立て部分では、改行はつねに「\n」ではなく、「\r\n」で記述するべきということですか?

また、PHPにおけるmail関数のメッセージ組み立て部分で、メッセージの行間に間をあけたくない場合、\r(復帰)で改行すればよいのでしょうか?「\r\n」又は「\n」では、行と行の間に一行空白ができてしまいますが?

<私の理解終了>

お分かりの方おられましたら、私の理解が正しいか判定をお願いします。

下記スレッド
http://oshiete1.goo.ne.jp/qa4137451.html
で以下のような質問をしていたのですが、
<質問開始>
よくメールフォームの本文部分やヘッダー部分の改行などで\r\n又は\nが使用されていますが、\r\nと\nは何が違うのでしょうか?

どちらも通常の改行のように思えますが。
<質問終了>
途中で質疑応答が途切れてしまいました。

上記の質問への回答から、私の理解は以下のようになりますが、私の理解は正しいのでしょうか?
<私の理解開始>
TinyPineさん
ご回答、ありがとうございま...続きを読む

Aベストアンサー

えっと....
PHP は使っていないのですが, RFC2822 による仕様と PHP の mail 関数の仕様で混乱してるような気がします.
[RFC2822]
RFC2822 では, 行末を \r\n (CRLF: 0d0a) と定義しています.
[PHP]
PHP の mail 関数で送信する場合, 送信するメッセージの改行コードは \n (LF: 0a), 追加ヘッダの改行コードは \r\n だそうです.
\n で空行が空いてしまう理由はよくわかりません.

参考URL:http://jp2.php.net/manual/ja/function.mail.php

Qビジネスメールの書き方(社内に向けて)

最近転職をして事務職に就いています。以前は販売の仕事をしていたため、ビジネスメールの書き方がさっぱりわかりません。近日中に社内の方に向けてメールを書くことになりましたがどう書き出したらいいのかわかりません。どなたか書き方を教えていただけないでしょうか。

Aベストアンサー

秘書をしています。
なんの用途のメールなのかがよくわからないのですが、とりあえずルールを書き出します。

(1)宛先・送付元を明確にする。

→メールは関連する人に一度に配信することが多いのですが、全ての人が対象となるとは決まっていません。例えば、部長に耳に入れておいたほうがいいメールの場合、CC:に部長を入れますが、メールの冒頭は「TO:●●さん」と入れて、部長宛ではないということを明確にしなければなりません。
また、署名を作成しておき、自分がどの部署の人間なのか明確にしておく必要があります。

(2)挨拶文は短く入れておく。

→いくら社内メールだからといって、いきなり業務の内容から入るのはぶしつけです。ですので朝なら「おはようございます」午後なら「お疲れ様です」の一言を入れておく。

(3)メールの題名にメール内容を集約して入れておく。

→例えば、書類の提出依頼であれば、「【提出依頼】○○会社:見積の件」など、また同じ題名が多くなる可能性があるなら、「【提出期限】○○会社:見積の件060301」と番号を振っておくと後々便利かも。この例番号の意味は「MMDDNN=月日番号」です。

*********************


題名:【お知らせ】○○見積方法変更について
宛先:ALL


内容:

TO:○○部ALL member

お疲れ様です。
表題の通り、○○見積方法が、6/15より変更となりますのでお知らせ致します。

~概略~

以上、何か不明点がある場合は△△までご連絡下さい。
宜しくお願い致します。


■■株式会社○○部 
△△ ゆき子
tel: XX-XXXX-XXXX
mail:***@*****.com


************************

こんな感じでしょうか。

秘書をしています。
なんの用途のメールなのかがよくわからないのですが、とりあえずルールを書き出します。

(1)宛先・送付元を明確にする。

→メールは関連する人に一度に配信することが多いのですが、全ての人が対象となるとは決まっていません。例えば、部長に耳に入れておいたほうがいいメールの場合、CC:に部長を入れますが、メールの冒頭は「TO:●●さん」と入れて、部長宛ではないということを明確にしなければなりません。
また、署名を作成しておき、自分がどの部署の人間なのか明確にしてお...続きを読む

QPATHは;C:\xampp\phpでOK^^

http://oshiete.goo.ne.jp/qa/8480862.html
の続きですが 
 PATHは以下で解決しました^^・・と思いますが!? 

システムプロパティ⇒詳細設定⇒環境変数⇒システム環境変数⇒Pathの最後に;C:\xampp\php
 と入力した。

それで!
 コマンドプロンプトを実行した結果が以下です。

 c:\>php -v
PHP 5.4.19 (cli) (built: Aug 21 2013 01:12:03)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

c:\>cd C:\xampp\htdocs\study.localhost

C:\xampp\htdocs\study.localhost>php stringcast.php 100
・ソnum is 100

C:\xampp\htdocs\study.localhost>

以上、OKでしょうか!?
 宜しくお願いいたします。

http://oshiete.goo.ne.jp/qa/8480862.html
の続きですが 
 PATHは以下で解決しました^^・・と思いますが!? 

システムプロパティ⇒詳細設定⇒環境変数⇒システム環境変数⇒Pathの最後に;C:\xampp\php
 と入力した。

それで!
 コマンドプロンプトを実行した結果が以下です。

 c:\>php -v
PHP 5.4.19 (cli) (built: Aug 21 2013 01:12:03)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

c:\>cd C:\xampp\htdocs\study.localhost

C:\xampp\htdo...続きを読む

Aベストアンサー

正常に動作してますが、文字化けだけ気になりますね。以下を参考にどうぞ。

Qiita - コマンドプロンプトで文字コードがUTF-8なテキストを表示する
http://qiita.com/yu_naka0607/items/5cf26397a1a026ec0949


人気Q&Aランキング

おすすめ情報