2011-05-05 208 views
4

我通过使用Net::IMAP库提取的电子邮件传递有问题Mail对象使用mikel/mail宝石定义。Write Net :: IMAP电子邮件到mikel /邮件电子邮件

我得到的邮件:

data = imap.uid_fetch(1, "BODY[]") 

,但我应该怎么后来把它变成Mail.read惯例?

mail = Mail.read(data.to_s) 

似乎得到Errno::ENAMETOOLONG: File name too long。它将邮件正文理解为文件名。

任何想法?

回答

8

Mail.read想要一个文件名。使用Mail.new从电子邮件源初始化一个Mail对象。

另外,获取RFC822而不是BODY[]

mail = Mail.new(imap.uid_fetch(1, "RFC822")[0].attr["RFC822"]) 
+0

太棒了!我愚蠢,我没有尝试Mail.new;)谢谢。顺便说一句,你的答案有错字,但我无法编辑。 – Mateusz 2011-05-06 11:11:46

+0

什么是错字? – 2011-05-06 11:57:20

+0

Shuldn​​'t它是“...使用'Mail.new'来...”? – Mateusz 2011-05-06 13:05:33