• 締切済み

Net_POP3について

現在Net_POP3を使用してのメール受信を作っています。 さくらインターネットを使用しているためmail関数が使えないので、上記のものを使用しています。 PEARは初心者のため、いくつかご質問があり投稿させていただきました。 getBody()を使ってメールの本文を表示させているのですが、メルマガやファイル添付付きのメールだと本文と関係(?)ないものまで表示されてしまいます。 例えば、メルマガですとHTMLメールで送られてくるため、 表示される本文の頭にContent-Type: text/plain; charset=ISO-2022-JPやソースまで表示されてしまいます。 添付付きのメールだと英語が長々と表示されてしまいます。 これらを表示されないようにするにはどうしたらよろしいのでしょうか? また、ファイル添付があった場合、添付表示され、保存ができるようにしたいのとメールの本文にURLの記載があった場合、リンクを貼る。 この3つのことがお分かりの方がいらっしゃいましたら、ご教授お願いいたします。

  • h-h13
  • お礼率24% (37/149)
  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • NARH
  • ベストアンサー率82% (88/107)
回答No.1

mail 関数は送信で、POP3 は受信じゃね?ってツッコミは置いといて。 Net_POP3 ってPOPサーバからメールを受信することが目的で、メールを解析することが目的ではないので、そういう物です。 PEARライブラリでしたら、受信したメールは Mail_mimeDecode で頑張るのかと思います。 http://www.phppro.jp/phptips/archives/vol35/1 とか参考になりませんか? マルチパートメールは仕様が決まっているので、自作されている方も少なくないと思いますよ。 > 本文にURLの記載があった場合、リンクを貼る。 については、PEARとかメールとは関係なく正規表現を使って、置換するだけですよね?

h-h13
質問者

お礼

すみません。mail関数ではなくimap関数でした。 pop3は確かにマニュアルなどを読むと受信目的な感じがします。 一応参考を見てみます。 有難う御座いました。

関連するQ&A

  • POPメール受信時の表示について

    http://itpro.nikkeibp.co.jp/article/COLUMN/20070827/280400/を参考に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-transitional.dtd"> <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共に正常に表示されております。 以上、よろしくお願いします。

    • ベストアンサー
    • PHP
  • mailコマンドでは化けないSubjectがPOPで受信すると文字化け

    mailコマンドで、メールのタイトル一覧を表示した時には、Subjectは文字化けしていないのですが、 POP3でメーラ(WindowsのBecky)で受信すると Subjectが文字化けしてしまいます。 ヘッダ情報は以下のようになっています。 MIME-version: 1.0 Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit 原因は何でしょうか?

  • メールから本文だけを取り出す方法

    今、迷惑メールフィルタリングを作成しているのですがメールの本文だけを取り出す方法がわかりません。 本文の前には Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-UIDL: B1("!E-U"!Lj<"!Se_"! などが書かれているのですが、これらに規則性がなく文字列処理で取り出すのに苦戦しているところです。 添付ファイルのないメールだと大体X-UIDLで終わっているのですが、 添付ファイルが付いているとメーラーごとに違うのか --Multipart=とあったり--Apple-Mail-5-234401926と書いてあったりします。 メーラーを作成している人ならきっと詳しいと思うのですが、誰か教えていただけませんでしょうか。

  • 題名が化ける(本文は読める)

    タイトルの様に、 題名が化ける 本文は読める ・・・メイルを受け取っています。 日本語での、 アメリカからのメイルマガジンです。 ISO-2022-JP で送られてきます。 HTML形式です。 Content-Type: text/plain; charset="iso-2022-jp" Content-transfer-encoding: 8bit ・・・となっていますが、 どうして、8bit ? と思っています。 Encodingを、 Shift_JIS にすると、 題名は、見られますが、 本文が、化けます。 ISO-2022-JP にすると、 題名が化けますが、 本文が読めます。 どの様なMUAを使っているか、問い合わせていますが、 題名が、Shift_JIS 本文が、ISO-2022-JP ・・・の設定はあるのでしょうか? これを、統一すれば、化けないと思うのですが。

  • メール関連

    php 初心者です。質問をさせてください。 メールフォームにて内容等は送受信とともに問題はないのですが、 本文に(上部)Mime-Version: 1.0          Content-Type: text/plain; charset=ISO-2022-JP          Content-Transfer-Encoding: 7bit と表示されます。 何が問題でどのような解決策がありますか? どなたかご教授お願いいたします。 素人目線で答えていただければ助かります。 宜しくお願いします。

    • 締切済み
    • PHP
  • hotmailで返信したときに勝手に文字列が付け加えられるのは何?

    hotmailをよく利用しています。 メールの’返信’を使用したときに送信前には表示されないのに 本文の前に↓のような文字列が 勝手に追加されて送られる時があるようなのですが これは一体何でしょう? 追加しないよう設定できるのでしょうか? 条件がハッキリとはわからないのですが 一旦下書きに移動されてから送信すると付くようにも思います。 -----ここから------- <**********(よくわからない文字列)***********.gbl> Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit MIME-Version: 1.0 -----ここまで-------

  • HTMLのMETA タグ、charset の扱いについて

    こんにちは。 HTMLのMETAタグの扱いについて教えてください。 下記HTMLソースの(1)~(3)までは正常に表示されます。 (4)に限って異常表示されるのは何故でしょうか? 異常の場合、途中からの表示になるのはタグ区切り文字の <>が不一致になるからでしょうか? また改行されなくなったのは何故でしょうか。 -----正常表示----- あいうえお メールアドレスaddress@domain.com かきくけこ さしすせそ たちつてと ------------------ -----異常表示----- address@domain.com かきくけこさしすせそたちつてと ------------------ (1)正常ケース1 一番シンプルなソースです。改行に<BR>を使っていません。 -----以下htmlソース内----- <HTML><META CONTENT="text/plain; charset=iso-2022-jp"> <PRE> あいうえお メールアドレス<A href="mailto:address@domain.com">address@domain.com</A> かきくけこ さしすせそ たちつてと </PRE></HTML> ----------------------- (2)正常ケース2 CONTENTの"の囲み内に更に"があります。 -----以下htmlソース内----- <HTML><META CONTENT="text/plain; charset="iso-2022-jp"> ※以降、正常ケース1と同じです。 ----------------------- (3)正常ケース3 charset="iso-2022-jp"と次の"までの間は、全角空白です。 -----以下htmlソース内----- <HTML><META CONTENT="text/plain; charset="iso-2022-jp" "> ※以降、正常ケース1と同じです。 ----------------------- (4)異常ケース charset="iso-2022-jp"と次の"までの間は、半角空白です。 -----以下htmlソース内----- <HTML><META CONTENT="text/plain; charset="iso-2022-jp" "> ※以降、正常ケース1と同じです。 -----------------------

    • ベストアンサー
    • HTML
  • Thunderbirdでテキスト形式のはずがHTML引用部分が含まれます。

    Thunderbirdでメッセージをプレーンテキスト形式に設定していますが、送った後HTML形式の引用部分を含んだメールになっていることがあります。 表示→メッセージの表示形式→プレーンテキストに設定し、アカウントのプロパティでも「編集とアドレス入力」では「HTML形式でメッセージを編集する」のチェックをはずしています。 送ったあと、送信メールを見てみると、HTML形式であることを意味する青い縦棒が入っているのです。 ヘッダを表示させて確認してみると、Content typeがtext/plain; charset="iso-2022-jp"のメールに対して、返信をしたメールは、text/plain; charset=ISO-2022-JPとなっています。ですが、メール本文は、青い棒が出ているのです。 青い棒ではなくテキスト形式の「>」で表示できればそれがいいのですが。。教えていただけませんでしょうか。

  • PHP の mb_send_mail で HTMLメール送信

    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も同じように勝手に追加されてしまいます。 考えられる原因を教えていただけますか?

    • ベストアンサー
    • PHP
  • linuxで、sendmail.cfファイルの設定について

    linuxで、sendmail.cfファイルの設定について 「Content-Transfer-Encoding」、「Content-Type: Text/Plain; charset=iso-2022-jp」というような項目を設定できますか。

専門家に質問してみよう