タイトル通り、文字化けが解消できません。
いつも他の事は全てUTF-8 でやっているのですが
メールは [ISO-2022-JP] を使わないといけないみたいですね。
PEAR を使わないで [mb_send_mail] を使っていた時は何もトラブルは無かったのですが。
以下、長いですが宜しくお願いいたします。
CENTOS 5
Mysql 5.0.45 MySQL の文字セット: UTF-8 Unicode (utf8)
PHP 5.0
PEAR 以下の通りで運用しています。
DB 1.7.13 stable
Mail 1.1.14 stable
Mail_Mime 1.5.2 stable
Mail_Queue 1.2.2 stable
Mail_mimeDecode 1.5.0 stable
PEAR 1.4.9 stable
メールを複数人に送る為に [Mail/Queue.php] を
利用しようとしています。
(ほぼ、サンプルで公開しているものをそのまま使わせてもらっています。)
http://php.atpedia.jp/pear/ja/package.mail.mail- …
メールを作成するPHPは、[UTF-8] にしています。
メールをデータベースに入れるときに [ISO-2022-JP] に変換しています。
取り出して送信する時にも変換しなくてはいけないのか?
初めてPEARを使うのもあって、動作自体が良く分からない為
文字化けに対処できずにいます。
お分かりになる方、宜しくお願いいたします。
キューに入力前に本文作成用ページ
このページは、UTF-8 です。
$subject $message 送信対象のID をこのページから下のページに [POST] で送信
キューに入力用ページ *サンプルを元に
<?php
mb_language("Ja");
mb_internal_encoding("utf8");
include './config.php';
/* db_options と mail_options をここで使用する */
$mail_queue =& new Mail_Queue($db_options, $mail_options);
/*-----PEARでデータベースに接続しているが理解できないので、再度接続。。 ココから---------*/
require_once("dbini.php");
$con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
$selectdb = mysql_select_db($DBNAME, $con);
mysql_query('set character set utf8');
/*----------------------------------データベースに接続 ココまで----------------------------*/
/*----------------------------------この変換のタイミングがおかしいのでしょうか?-----------------*/
$subject = mb_encode_mimeheader($subject,'ISO-2022-JP');
$message = mb_convert_encoding($message,'ISO-2022-JP','UTF-8');
/*----------------------------------ここまで変換-----------------------------*/
$sql = "SELECT * FROM member WHERE **************";
$rst = mysql_query($sql, $con);
//件数を数える
$recmax = mysql_num_rows($rst);
//ループでID、名前、メールアドレスを取り出す
while($rows = mysql_fetch_array($rst)){
$id = $rows["customerID"];
$name = $rows["name"];
$mail = $rows["mail"];
$from = '***@*******.net';
$to = $mail;
$hdrs = array( 'From' => $from,
'To' => $to,
'Subject' => $subject );
/* 有効なメールを構築するため、Mail_mime() を使用する */
$mime =& new Mail_mime();
//文字コード変換する
$mime->setTXTBody($message);
$body = $mime->get();
$hdrs = $mime->headers($hdrs);
/* メッセージをキューに追加する */
$mail_queue->put( $from, $to, $hdrs, $body );
}
$con = mysql_close($con);
?>
送信用ファイル *サンプルそのまま
<?php
include './config.php';
/* スクリプトがコールされるたびに何通のメールを送信するか */
$max_amount_mails = 50;
/* 設定から db_options と mail_options を再び使用する */
$mail_queue =& new Mail_Queue($db_options, $mail_options);
/* メッセージを実際に送信する */
$mail_queue->sendMailsInQueue($max_amount_mails);
?>
No.1ベストアンサー
- 回答日時:
メッセージをキューに追加する前の部分の記述ですが、
こちらは、Mail_mimeクラスとのことで、
恐らく、通常の文字列から有効なmimeヘッダを作成するものと思います。
それに加えてその前段階で、mb_encode_mimeheaderを行っておられる様子ですので、まずはそちらをはずしたほうがよいかと思います。(多重でエンコードを行ってる)
その上で、$message/$subjectはUTF-8からISO-2022-JPへ変換(中ほどの$message=mb_convert_encodingはそのままで、$subjectをmb_encode_mimeheaderからmb_convert_encodingへ書き換え)
$mime->get()
の部分を、
$param = array();
$param["text_charset"] = 'ISO-2022-JP';
$mime->get($param)
と変更し、getに引数を与える
と、これで文字化けは解消されそうです。
http://peardoc.xole.net/package.mail.mail-mime.g …
こちらが、Mail_mime::get()メソッドのマニュアルになります。
いかがでしょうか。
ありがとうございました。
何事も無かったかのように、ピシッと動きましたm(__)m
とりあえずはソースまで書いていただいたので、そのまま書き換えて
うまく動く事を確認後、教えていただいたマニュアルとソースを見ています。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- 英語 この"e-mail"が複数形でもなく、無冠詞なのはなぜですか? 「表現のための実践ロイヤル英文法」に 1 2022/07/10 16:12
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Gmail 家から自分のg-mailで添付ファイル付きのメールを4通、職場の自分宛てに送りました。次の日に見ると 3 2022/09/08 12:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローカル環境でのメール送信
-
PHPで、複数のアドレスにメール...
-
mb_send_mail関数が利用出来ない
-
mailやmb_send_mail関数で、本...
-
フォントの色を変えるには?
-
PHPの設定で、 エラーが発生し...
-
onedrive にexcelファイルをア...
-
Linux:PHPでTELNETによるSMTP...
-
ListViewコントロールでサムネ...
-
ボタンのクリック数を合計保存...
-
ワードプレス、Contact Form 7...
-
PHPのif文でその処理を途中で抜...
-
現在位置より2つ上のディレク...
-
別ファイルの変数を呼び出した...
-
【file_exists】ファイルが存在...
-
UWSCでファイルのアップロード...
-
PHPExcel処理速度が遅い
-
PHPで`headers already sent`と...
-
【PHP】declare命令で”Fatal er...
-
PHP8を使うと、大量のWarningが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php 完了画面の送信メールのコ...
-
さくらサーバーにて、phpからメ...
-
メールフォームのタイトルが文...
-
PHPsendmailにて送信元を変更
-
mb_send_mail関数が利用出来ない
-
PHPからロリポップ!のメールサ...
-
VBA 添付ファイルをつけてメー...
-
mailやmb_send_mail関数で、本...
-
sendmailでエラーがでます
-
PHPでの仮登録時の会員認証メー...
-
phpでメール送信できません 原...
-
mb_send_mail() 第 4、5 引数の...
-
PHPMailerのコードエラーが解決...
-
PHPからメールを送る@さくらイ...
-
ローカル環境でのメール送信
-
PHPでメールを送信するには
-
mb_send_mailについて
-
メールの本文をSmartyにしたい
-
mail関数を使った場合のReturn-...
-
PEAR の Mail/Queue.php で文...
おすすめ情報