http://itpro.nikkeibp.co.jp/article/COLUMN/20070 …を参考にPOP3サーバにあるメールをPHPを使って受信しました。
そうした所、2点疑問点があったのですが、どのようにすれば解決できるのかわからなかったので、
アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。
1. メールの本文で文字が?になってしまう事があるのですが、どのようにすれば正しく表示されるかがわかりませんでした。
なお、この現象が発生するのは、はしごだか、丸上、丸20、ローマ数字の1、1文字のミリなどとなります。
■送信時のメール本文
はしごだか(髙)
うえ(上)
二十(20)
一I
ミリミリ
■受信結果
[本文]
はしごだか(?)
うえ?
二十?
一?
ミリ?
2. HTMLメールを受信時、タグ?のようなものが表示されるのですが、どうすれば普通のメーラーのようにHTMLメールの中身が表示されるかがわかりませんでした。
■受信結果
[本文]
--0016(以下略)
Content-Type: multipart/alternative; boundary=0016(以下略)
--0016(以下略)
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
*はしごだか(?)*
*うえ?*
*二十?*
一?
ミリ?
[image: Blue hills.jpg]
--0016(以下略)
Content-Type: text/html; charset=ISO-2022-JP
Content-Transfer-Encoding: base64
以下略
--0016(以下略)--
--0016(以下略)
Content-Type: image/jpeg; name="Blue hills.jpg"
Content-Transfer-Encoding: base64
Content-ID: <***>
X-Attachment-Id: ***
(以下略)
--0016(以下略)--
なお、使用したソースは下記となります(host, username, passwordは使用するPOP3サーバにあわせる必要があります)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>メール受信</title>
</head>
<body>
<?php
require_once('Net/POP3.php');
$account = array(
'host' => 'pop.mail.yahoo.co.jp',
'port' => '110',
'username' => 'ユーザ名',
'password' => 'パスワード',
);
$pop3 =& new Net_POP3();
$pop3->connect($account['host'], $account['port']);
$pop3->login($account['username'], $account['password']);
$n_msg = $pop3->numMsg();
$body = mb_convert_encoding($pop3->getBody($n_msg), "utf-8", "jis");
$body = htmlspecialchars($body, ENT_QUOTES, "utf-8");
$pop3->disconnect();
?>
<p>[本文]</p>
<pre>
<p><?php echo $body; ?></p>
</pre>
</body>
</html>
なお、私はYahooのWebメール上で受信したメールを表示して試しましたが、YahooのWebメール上では、1,2共に正常に表示されております。
以上、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
SJIS-win 経由でどうでしょうか。
mb_convert_encoding(mb_convert_encoding(quoted_printable_decode($pop3->getBody($n_msg)), 'SJIS-win', 'ISO-2022-JP'), 'UTF-8', 'SJIS-win');
参考URL:http://ja.wikipedia.org/wiki/Microsoft%E3%82%B3% …
ご回答ありがとうございます。
ご教示いただいたソースを試した所、文字化けが発生しなくなりました。
まだ詳しくは検証していませんが、疑問点1についてはこれで大丈夫なのではと思います。
このたびはどうもありがとうございました。
以上、よろしくお願いします。
PS.
疑問点2については引き続き解答を募集させていただきたいと思います。
よろしくお願いします。
No.1
- 回答日時:
$body = mb_convert_encoding(quoted_printable_decode($pop3->getBody($n_msg)), 'UTF-8', 'ISO-2022-JP');
これでどうでしょうか。
ご回答ありがとうございます。
ご教示いただいたソースを試したのですが、現象は変わりませんでした。
試したソースは下記となりますが、ご教示いただいた記述を間違って解釈しているようでしたら、ご指摘いただければと思います。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>メール受信</title>
</head>
<body>
<?php
require_once('Net/POP3.php');
$account = array(
'host' => 'pop.mail.yahoo.co.jp',
'port' => '110',
'username' => 'ユーザ名',
'password' => 'パスワード',
);
$pop3 =& new Net_POP3();
$pop3->connect($account['host'], $account['port']);
$pop3->login($account['username'], $account['password']);
$n_msg = $pop3->numMsg();
$body = mb_convert_encoding(quoted_printable_decode($pop3->getBody($n_msg)), 'UTF-8', 'ISO-2022-JP');
$body = htmlspecialchars($body, ENT_QUOTES, "utf-8");
$pop3->disconnect();
?>
<p>[本文]</p>
<pre>
<p><?php echo $body; ?></p>
</pre>
</body>
</html>
以上、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP php ログイン 1 2022/11/01 00:24
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IMAP関数で取得した文字列の、...
-
メールのCCに複数のアドレスを...
-
RSSを取得すると文字化けする。
-
multipart/form-dataの文字化け
-
PHPmailerでの添付ファイルの文...
-
UTF8メールがLotus Notesで文字...
-
セッションが文字化け、エンコ...
-
CGIを作っています。渡されて来...
-
文字化け変換方法
-
Gmailへのメール送信で文字化け
-
Warning: mb_strpos(): Unknown...
-
includeファイルの文字コードに...
-
SQL Serverで文字コードUTF-8
-
SJISで取得した半角カナをUTF-8...
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
文字の入力で横バー上段、中断...
-
メッセージボックスで1025文字...
-
エスケープ文字の復帰(¥r)と...
-
COBOLの改行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化け変換方法
-
phpのメールフォームの完了画面...
-
SQL Serverで文字コードUTF-8
-
PHPmailerでの添付ファイルの文...
-
SJISで取得した半角カナをUTF-8...
-
mb_convert_encoding で 一部の...
-
PHP cURLでPOSTした値が文字化...
-
SJIS→UTF-8変換後の文字化けに...
-
mb_ereg_replaceに関して
-
【PHP】mb_convert_encoding...
-
phpMyAdmin内での文字化け
-
mb_regex_encodingでエンコード...
-
PostgreSQLからCSV形式でエクス...
-
RSSを取得すると文字化けする。
-
postの文字化け防止について
-
UTF8メールがLotus Notesで文字...
-
小さいひらがな(っ、ょ、ぃ、ゃ...
-
phpでの文字エンコード
-
php自動返信メール本文の一部の...
-
mail()で送信したメールのタイ...
おすすめ情報