当输入来自 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
返回:无 无
# This one is from the file:
mail2 = Mail.new("my_email.txt")
p mail2.from
p mail2.to
返回:无 无
# 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)
我知道我可以将该文件从标准输入保存到临时文件夹,然后通过 Mail.read 打开它,但我不想这样做,因为它会很慢。
gem 的完整网址是:https ://github.com/mikel/mail