14

ruby mail gemを使ってメールを読もうとしています。しかしmail.body.decoded、本文メッセージだけではありません。この本文メッセージをクリーンアップして、次のような不要なテキストを削除するにはどうすればよいですか:

-20cf30433c9a437cc304939017ef\nContent-Type: text/plain; charset=ISO-8859-1\nContent-

message = $stdin.read
mail = Mail.read_from_string(message)
puts mail.body.decoded

--20cf30433c9a437cc304939017ef\nContent-Type: text/plain; charset=ISO-8859-1\nContent-Transfer-Encoding: quoted-printable\n\n REAL BODY TEXT \\n\n--20cf30433c9a437cc304939017ef\nContent-Type: text/html; charset=ISO-8859-1\nContent-Transfer-Encoding: quoted-printable\n\n<br clear=3D\"all\">--20cf30433c9a437cc304939017ef--

ヘッダーなしで REAL BODY TEXT のみを抽出して、このメール本文メッセージをクリーンアップするにはどうすればよいですか?

Ruby on Rails に基づいた単純なチケット システムを作成しています。ticket@mydomain.com からメールを受信すると、チケットが作成されます。ただし、メッセージが HTML 形式の場合、BODY TEXT は HEADER テキストで囲まれます。

4

4 に答える 4

10

適切にフォーマットされた電子メールがある場合は、メールヘルパーメソッドを使用できます。

mail = Mail.new(email_string)
mail.text_part # finds the first text/plain part
mail.html_part # finds the first text/html part

これは、たとえば単一部分のメッセージ(テキストのみ)がある場合や、インターネット全体から電子メールを受信する場合は、すべてのクライアントからのフォーマットに依存できないため、常に機能するとは限りません。私を信じてください、私は難しい方法を学びました。

于 2011-04-15T16:55:06.957 に答える
9

マルチパート電子メールを持っているように見えるので、mail.parts[0].body.decoded を使用できます。これらもおそらく便利です: mail.multipart?
メール.パーツ.長さ

githubの gem ドキュメントはかなりまともです

于 2010-10-29T21:08:27.113 に答える