2

入力がSTDINからのものである場合、Rubyから電子メールMIMEを解析する方法を知っている人はいますか? 「mail」と呼ばれる非常に見栄えの良い gem を見つけましたが、私が見る限り、ファイルからのみメールを読み取ることができます。

require 'mail'
mail = Mail.read('/path/to/message.eml')

これは私がそれをテストしている方法です:

# First one is from stdin:
require 'mail'
mail = Mail.new($stdin.readlines)
p mail.from
p mail.to

戻り値: nil nil

# This one is from the file:
mail2 = Mail.new("my_email.txt")
p mail2.from
p mail2.to

戻り値: nil nil

# The same file but I'm using Mail.read:
mail3 = Mail.read("my_email.txt")
p mail3.from
p mail3.to

戻り値: ["test@gmail.com"] ["test2@gmail.com"]

STDIN私は次のようにテストしています:

# cat my_email.txt | ruby code.rb

したがって、メソッド Mail.read は私の電子メールで正常に機能しますが、標準入力を Mail.read に入れたい場合は、次のようにします。

mail/mail.rb:176:in `initialize': no implicit conversion of Array into String (TypeError)

そのファイルを stdin から temp フォルダーに保存し、それを Mail.read で開くことができることはわかっていますが、遅くなるため、そのようにしたくありません。

gem の完全な URL はhttps://github.com/micel/mailです。

4

2 に答える 2