我有一个Base64编码的PDF数据,并希望使用ActionMailer将其设置为邮件的附件。
我尝试过如下(假设Base64编码的pdf数据在while True:
msg = input('''What would you like translated? please use lower-case letters.:''')
print ("")
for i in msg:
print(morse[i])
userstatus = input('Would you like to go again?(y or n): ').lower().strip(' ')
if userstatus not in('y', 'ye', 'yes'):
sys.exit()
中):
base64_encoded_string
但是,当我在收到的电子邮件上打开附加的pdf文件时,该文件已损坏。
现在我提前解码一个Base64字符串,让ActionMailer对Base64进行编码,它没有任何问题。
attachments['attachment.pdf'] = {
mime_type: 'application/pdf',
encoding: 'base64',
content: base64_encoded_string
}
如何直接将Base64编码的字符串设置为pdf attachemnt?
答案 0 :(得分:2)
似乎我找到了解决方案。如果您提供base64字符串作为内容,请确保指定编码。否则Rails将第二次编码已编码的字符串。
attachments['base64_file.pdf'] = {
mime_type: 'application/pdf',
encoding: 'base64',
content: base64_string
}
答案 1 :(得分:0)
来自Rails document:
Mail会自动Base64编码附件。如果你想 不同的东西,编码你的内容并传入编码 哈希中的内容和编码到附件方法。
所以你只需将内容设置为base64字符串而不指定编码。它会起作用,这就是我在项目中所做的:
attachments['attachment.pdf'] = {
mime_type: 'application/pdf',
content: base64_encoded_string
}
答案 2 :(得分:-2)
此链接应有帮助。
http://apidock.com/rails/ActionMailer/Base/attachments
attachments['attachment.pdf'] = { mime_type: 'application/pdf',
content: File.read('/path/to/filename.pdf')}