Ruby on rails 在RubyonRails中,如何解码内容传输编码base64邮件对象

Ruby on rails 在RubyonRails中,如何解码内容传输编码base64邮件对象,ruby-on-rails,base64,actionmailer,decode,Ruby On Rails,Base64,Actionmailer,Decode,我正在开发RubyonRails操作邮件。我所做的是,我有一个后台进程轮询我的gmail帐户,我用“RFC822”协议检索邮件。然后,我将这些邮件发送到ActionMailer类中的receive方法 虽然我可以成功地处理几乎所有收到的邮件,但有时我确实会遇到国际邮件,这些邮件的英文字符带有重音符号。当把这些邮件的正文显示给STDOUT时,它们似乎是一些随机字符,如下所示,因为我认为解码是错误的 这是我在屏幕上打印邮件对象时邮件对象的主体: "PGh0bWw+PGhlYWQ+PG1ldGEgaH

我正在开发RubyonRails操作邮件。我所做的是,我有一个后台进程轮询我的gmail帐户,我用“RFC822”协议检索邮件。然后,我将这些邮件发送到ActionMailer类中的receive方法

虽然我可以成功地处理几乎所有收到的邮件,但有时我确实会遇到国际邮件,这些邮件的英文字符带有重音符号。当把这些邮件的正文显示给STDOUT时,它们似乎是一些随机字符,如下所示,因为我认为解码是错误的

这是我在屏幕上打印邮件对象时邮件对象的主体:

"PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVudD0i
ZW4tdXMiPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PVVURi04Ij48bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1pY3Jvc29m
dCBGcm9udFBhZ2UgNC4wIj48bWV0YSBuYW1lPSJQcm9nSWQiIGNvbnRlbnQ9IkZyb250UGFnZS5F
ZGl0b3IuRG9jdW1lbnQiPjx0aXRsZT5OZXcgUGFnZSAxPC90aXRsZT48L2hlYWQ+PGJvZHk+PHRh
YmxlPjx0cj48dGQ+PHA+PGZvbnQgZmFjZT0iQXJpYWwiIGNvbG9yPSJibGFjayIgc2l6ZT0iMSI+
PGI+Q29udGV1ZG8gZW52aWFkbyBkbyBtZXUgQ2VsdWxhciBWaXZvPC9iPjwvZm9udD48L3A+PC90
ZD48L3RyPjx0YWJsZSBib3JkZXI9MD48dHI+PHRkIGNvbHNwYW49MT48aHIgY29sb3I9IjgxODFE
QiI+PC90ZD48L3RyPjx0cj4KPHRyPjx0ZCBjb2xzcGFuPTEgYWxpZ249IkNlbnRlciI+PGZvbnQg
ZmFjZT0iQXJpYWwiIGNvbG9yPSJibGFjayIgc2l6ZT0iMyI+I3IgZm9jbyBkZSBkZW5ndWUgI24g
YnJhc2lsICNzIHNwICNjIHPDo28gcGF1bG8gI2EgcnVhIG1hcmFuaMOjbyBjb20gcnVhIGFyYWNh
anU8L2ZvbnQ+PC90ZD48L3RyPgo8L3RyPjx0cj4KPHRkIGNvbHNwYW49MT4KPGhyIGNvbG9yPSI4
MTgxREIiPgo8L3RkPgo8L3RyPgo8L3RhYmxlPgo8L3RhYmxlPgo8L2JvZHk+CjwvaHRtbD4="
这些国际邮件有内容传输编码:base64而不是7bit。那么,我需要做什么才能正确地解码电子邮件呢?我尝试过Base64.decode64之类的方法,但它抱怨没有定义解包方法

我已经在这方面工作了几个小时,运气不好。谁能帮帮我吗


谢谢

看起来您提供给
Base64的参数。decode
不是字符串。(因为
decode
返回到
String.unpack

发件人:


它看起来像是您提供给
Base64的参数。decode
不是字符串。(因为
decode
返回到
String.unpack

发件人:


至少现在ActionMailer能够正确解码这些电子邮件。 这应该起作用:

message = Mail.new(encoded_body)
message.html_part.body.decoded

至少现在ActionMailer能够正确解码这些电子邮件。 这应该起作用:

message = Mail.new(encoded_body)
message.html_part.body.decoded

很可能直到那时你才明白。我在寻找关于ruby中Base64的答案。我的问题是,当存在内容传输编码时,Base64编码应该每76个字符添加一行,而不是每60个字符添加一行(默认)。所以,也许你是用换行符每60个字符解码一次,而不是76个字符。很可能直到那时你才明白。我在寻找关于ruby中Base64的答案。我的问题是,当存在内容传输编码时,Base64编码应该每76个字符添加一行,而不是每60个字符添加一行(默认)。所以,也许你是用换行符每60个字符解码一次,而不是用76个字符解码一次。