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

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

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

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

PEAR

PEAR (PHP Extension and Application Repository)はPHPで利用する事ができるライブラリです。

Q&A

解決済

1回答

7810閲覧

PEAR Mail:UTF-8でplain/textとtext/htmlを送信する方法(PHP)

storm

総合スコア8

PHP

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

PEAR

PEAR (PHP Extension and Application Repository)はPHPで利用する事ができるライブラリです。

0グッド

0クリップ

投稿2014/10/07 15:00

テキストとHTMLの両方でemailを送信しようとしています
しかし、正しいヘッダを送信できず困っています

特に、コンテンツタイプのヘッダをセットしたいのですが、HTMLとテキストの部分で別々に設定する方法がわからないです。

lang

1$headers = array( 2 'From' => 'info@hogehuga.com', 3 'Return-Path' => 'info@hogehuga.com', 4 'Subject' => 'タイトル', 5 'text_encoding' => '7bit', 6 'text_charset' => 'UTF-8', 7 'html_charset' => 'UTF-8', 8 'head_charset' => 'UTF-8', 9 'Content-Type' => 'text/html; charset=UTF-8' 10); 11 12$mime = new Mail_mime(); 13 14$html = '<html><body><b>テスト</b></body></html>'; 15$text = 'メールテスト'; 16 17$mime->setTXTBody($text); 18$mime->setHTMLBody($html); 19 20$body = $mime->get(); 21$headers = $mime->headers($headers); 22$mail_object =& Mail::factory('smtp', $GLOBALS['pear_mail_config']); 23$mail_object->send('test@hogehuga.com', $headers, $body);

受信するemailです。

lang

1From: info@hogehuga.com 2Subject: タイトル 3text_encoding: 7bit 4text_charset: UTF-8 5html_charset: UTF-8 6head_charset: UTF-8 7Content-Type: multipart/alternative; 8 boundary="=_7adf2d854b1ad792c802a9db31084520" 9 10<中略> 11 12 13--=_7adf2d854b1ad792c802a9db31084520 14Content-Transfer-Encoding: 7bit 15Content-Type: text/plain; charset="ISO-8859-1" 16 17メールテスト 18 19--=_7adf2d854b1ad792c802a9db31084520 20Content-Transfer-Encoding: quoted-printable 21Content-Type: text/html; charset="ISO-8859-1" 22 23<html><body><b>テスト</b></body></html> 24--=_7adf2d854b1ad792c802a9db31084520--

コンテンツタイプのヘッダが完全に無視されているみたいです。
setHTMLHeadersとsetTXTHeadersのような関数があると思っていたのですが、このようなものはないみたいです。
自分のコードには何かが足りないのでしょうか?

どのようにすれば、両方のコンテンツタイプのヘッダをUTF-8に設定することができますか?
対処法をわかる人がおられましたら、お知恵をお貸し下さい。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ヘッダは別に書かれていなければいけません。
特に、いくつかはmimeオブジェクトのパラメータであり、emailヘッダではありません。
mime_paramsの配列はget()関数にパスされるはずです。

以下がヘッダを設定する正しい方法です。

lang

1$headers = array( 2 'From' => 'info@hogehuga.com', 3 'Return-Path' => 'info@hogehuga.com', 4 'Subject' => 'タイトル', 5 'Content-Type' => 'text/html; charset=UTF-8' 6); 7 8$mime_params = array( 9 'text_encoding' => '7bit', 10 'text_charset' => 'UTF-8', 11 'html_charset' => 'UTF-8', 12 'head_charset' => 'UTF-8' 13); 14 15$mime = new Mail_mime(); 16 17$html = '<html><body><b>テスト</b></body></html>'; 18$text = 'メールテスト'; 19 20$mime->setTXTBody($text); 21$mime->setHTMLBody($html); 22 23$body = $mime->get($mime_params); 24$headers = $mime->headers($headers); 25$mail_object =& Mail::factory('smtp', $GLOBALS['pear_mail_config']); 26$mail_object->send('test@hogehuga.com', $headers, $body);

投稿2014/10/09 07:30

kanehira_69

総合スコア23

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問