• 締切済み

POP3でメール受信

C++Builder6のNMPOP3コンポーネントでメールを受信するプログラムを作成しています。 NMPOP3->GetMailMessage(i); NMPOP3->MailMessage->Body で、メールの本文を取得しようとしているのですが、 Memo->Lines->Assign(NMPOP3->MailMessage->Body) などで Bodyの内容を取得しようとしているのですが、 本来改行されない部分で改行されたり、別の一文が入り込んだり、 JISコードがおかしい状態で取得されてしまいます。 何かよい方法はないでしょうか? よろしくお願いいたします。

  • Caya
  • お礼率78% (255/325)

みんなの回答

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

あまり関係がないかもしれないけど >JISコードがおかしい状態 メール、ヘッダも本文も、必ずJISで来るわけじゃ ないよ?

Caya
質問者

お礼

回答ありがとうございます。 全体的に[ESC]$Bほにゃらら[ESC](Bという JISの形でBodyが取得できている状態です。 その中の一部が変に取得されてしまいます。

関連する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
  • DelphiのTMemoのテキスト末尾の改行削除

    Delphiで付箋ソフトを作ろうとしています。 それで、Memoコンポーネント(TMemo)に入力されたテキストの末尾に改行があったら、それを削除したいのですが、改行があるかどうかを検知することすらできません。 Memo1.Lines.Strings[Memo1.Lines.Count-1] が最後の行の文字列の内容になるはずなのですが、末尾に改行があってもなくても、これ↑には同じ文字列(末尾に改行なし)が入っています。でも、表示上は異なっているんです。 どなたか、わかる方いらっしゃいましたら教えてください。

  • Thunderbirdの受信メールが調子が悪くて?困っています

    メールソフトで、Thunderbirdを使っているのですが、 受信メール本文が終わって、さらに下に数十行くらい 空で改行(スペース?)が入っています。 会社から家に、改行を入れていないメールを送っても このような現象が出ます。 また、この現象は最近だけで、インストールし始めた頃(10月くらい) に受信しているメールではいたって普通です。 何か設定や表示方法が変わってしまっているのでしょうか? Thunderbirdを再インストールするしかないのでしょうか? よろしくお願いします。

  • メールの文字化け

    メールの文字化け 本文を改行せず(Enterを打たない)に作成すると990バイト目付近に(0x0D0A20)が挿入されて以降が化けてしまいます。JISコード 漢字INの状態で割り込まれるからです。 メールソフトによらず起こり 自分あてのメールを@niftyWEBメール を覗いてもすでに化けています。 他人にはもちろん化けて着信します。 改行を入れれば化けないことはわかっていますが、どこで、何の目的でこのような挿入がされるのか知りたい。まさかniftyが挿入したのではないと思いつつ。

  • フォームメールを受信すると文字化けをします。

    携帯サイトにCGIフォーム(CGIの文字コードは全てshift_jis)を設置しています。 iMacや、iPatや、ThanderBirdで、受信をすると、すべて、文字化けします。 Macで、POPを返さない方が文字化けをしないと聞いたので、受信アドレスをgmailアドレスに変えましたら、Mac系では、文字化けがなくなりました。 が、同時に、普通のメールアドレスを設置し、ThanderBirdで受信をしましたら、やはり文字化けをします。 ThanderBirdのエンコード設定は、ISO-2022-JP となっていて、少し調べましたら 「インターネットでは7bitの文字コードでやりとりするのが標準なので、日本語の場合は7bitの「JIS(ISO-2022-JP)」という文字コードを使うよう定められている。Shift-JISやEUCは8bitの文字コードなので、送信の際、メールソフトがこれをJISに変換するのが普通だ。」とのこと。 半角カタカナなどは、含まれていないのですが、やはり、フォームメールを受け取りますと、文字化けをしてしまいます。 届いたメールは、タイトルは正しく表記され、中身が、文字化け。 メールのエンコードをShift-JISに変換すると、逆に、タイトルが文字化けし、本文(中身)が、正しく表記されます。 OUTLOOKなどWindowsの仕様のものを試していないのですが、 何かを修正すると、文字化けせずに、閲覧できるのか、もし、方法があれば、おおしえいただければと思いました。 使っていますCGIフォームは http://www.kurohama.net/c5.shtml 今は、Shift-JISですが、UTF-8に変換はできるようです。 どうぞ よろしくお願いいたします。

    • 締切済み
    • CGI
  • O.Eで、メール本文をコピーして送ると改行がはずれてしまうのはなぜでしょうか?

    例えば・・・、 O.E6 SP2で、受信済みのメールを一通開きます。 開いたメールの本文を[すべて選択]-[コピー]します。 次に、O.E6 SP2のエディタに、コピーした本文を貼り付けます。 そして送信し、すぐにに受信してみます。 受信したメールを開いてみると、改行がはずれてしまって、各文章が数珠つなぎになって表示されます。 この本文をTeraPadにコピーしても、やはり文章が数珠つなぎになって表示されます。 送信時に、何らかの理由で改行コードがCR+LFから、LFに切り替わってしまうのでしょうか?。理由をご存知でしたら、教えてください。

  • C#のメール送信時のエラーについて

    こんにちは、今現在C#でメールの送信部分を作っているのですがどうしても送信途中でエラーがでてとまってしまいます。 一応、当方で確認したところによると文字コードに関するエラーが出ず、ただただ「送信ができませんでした」とハンドラで表示されます。 どのようにしたらよいでしょうか? どなたかご教授お願いします。 メールソフトのソースプログラム private void seButton_Click(object sender, EventArgs e) { //JISコード System.Text.Encoding enc = System.Text.Encoding.GetEncoding(50220); //MailMessageの作成 System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); //件名と本文の文字コードを指定する msg.SubjectEncoding = enc; msg.BodyEncoding = enc; //メールの送信元のアドレス msg.From = new System.Net.Mail.MailAddress("niihama-kosen@test.ac.jp"); //メールの送信先のアドレス msg.To.Add(new System.Net.Mail.MailAddress(adressBox.Text)); //メールの件名 msg.Subject = "coBox.Text"; //メールの本文 msg.Body = "hoBox.Text"; //SMTPサーバの設定 System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient(); //SMTPサーバの指定 sc.Host = "smtpBox.Text"; //メールの送信 sc.Send(msg); //msgの破棄 msg.Dispose(); }

  • 受信メールに余計な改行が入ります。

    メールクライアント Thunderbird 2.0 OS Windows XP Pro さて、この環境でメールクライアントには、 ヤフーアカウント 3 自社ドメインアカウント 2 と5つ程のアカウントを設定し、利用中です。 5月17、18日あたりから、受信する約9割の受信メールに改行が、沢山付く様になってしまいました。 改行は、本文終わりから始まり 多い場合は、340個ほどの改行 少ないと150個前後の改行です。 返信する場合に、引用として">"が、上の数だけ付いてきます。 初めは、返信時の問題だと思っていましたが、 受信メールを印刷した時に、白紙が何枚も印刷され、 そもそもの受信メールに改行が入っていると気づきました。 元メールに改行が入れてある可能性はありません。 ※携帯から複数人からの受信で、全部そうなりますので。 また、他PCで同様のアカウントで設定している分については、問題ありません。 問題はPC固有のものと思われます。 メールクライアント自体、2度の再インストール済み。 c:\Documents and Settings\Administrator\Application Data\Thunderbird 以下を削除(設定ファイル、メールデータ) 疑わしきは、アンチウィルス位でしょうか・・・。 ちなみに、CA インターネット セキュリティスイート 2007 同アカウント設定の他PCも同じアンチウィルス環境なのですが、上記問題は起きていません。 かなり例外的なケースだと感じていますが、 なにかお気づきの点などありましたら、ご教授くださいませ。 ※ちなみに、Firefox2.0でCSSの解釈もこのPCだけ崩れてます。 これも2度の再インストールでもダメ。関連は無いでしょうか・・・。

  • メールBODYの最後に改行

    皆様こんにちは。 PHP4のmail()関数でメールを送信したところ メール本文の最後に改行が入ってしまいました。 またlinuxのmailコマンドでメールを送信したところ 同じ状況です。 PHPの問題ではないかもしれません。 そもそもメールの本文BODY部分の最後には改行が 入るものなのでしょうか?(規格などで) またこの改行を取り除くことは可能なのでしょうか? ご教授お願いいたします。

    • 締切済み
    • PHP
  • メール本文のJIS変換

    お助けください。 CGI/Perlでメールを送信するコードを作成しております。 元々jcode.plを使用して書かれたコードを参考に作成しましたが、 ActivePerl 5.8を使用しており、Encode.pmを使用することを検討しました。 ところが、jis(iso-2022-jp)への変換がどうにもこうにもうまくいきません。 あちこち資料を探しましたが、手がかりになるものが見当たりませんでした。 $sData = encode("jis","テストメール"); これだけですと、オクテット(でよいのだろうか?)にしかならないようで、 受信した本文は化けた状態になってしまいます。 どなた様か、ご教示願います。

    • ベストアンサー
    • Perl

専門家に質問してみよう