入力が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です。