在Ruby on Rails中,如何将Base64编码的字符串设置为pdf附件?
In Ruby on Rails, how to set Base64 encoded string as a pdf attachment?
我有一个 Base64 编码的 PDF 数据,想使用 ActionMailer 将其设置为邮件的附件。
我试过如下(假设 Base64 编码的 pdf 数据在 base64_encoded_string
中):
attachments['attachment.pdf'] = {
mime_type: 'application/pdf',
encoding: 'base64',
content: base64_encoded_string
}
但是当我打开收到的电子邮件中的附件pdf文件时,文件已损坏。
现在我提前解码一个Base64字符串,让ActionMailer去编码Base64,没问题
attachments[File.basename('attachment.pdf')] = Base64.decode64(base64_encoded_string)
如何直接将Base64编码的字符串设置为pdf附件?
来自 Rails document:
Mail will automatically Base64 encode an attachment. If you want
something different, encode your content and pass in the encoded
content and encoding in a Hash to the attachments method.
所以你只是将内容设置为base64字符串,没有指定编码。它会起作用,这就是我在我的项目中所做的:
attachments['attachment.pdf'] = {
mime_type: 'application/pdf',
content: base64_encoded_string
}
这个link应该有帮助。
http://apidock.com/rails/ActionMailer/Base/attachments
attachments['attachment.pdf'] = { mime_type: 'application/pdf',
content: File.read('/path/to/filename.pdf')}
看来我找到了解决办法。如果您提供 base64 字符串作为内容,请确保指定编码。否则 Rails 将对已经编码的字符串进行第二次编码。
attachments['base64_file.pdf'] = {
mime_type: 'application/pdf',
encoding: 'base64',
content: base64_string
}
我有一个 Base64 编码的 PDF 数据,想使用 ActionMailer 将其设置为邮件的附件。
我试过如下(假设 Base64 编码的 pdf 数据在 base64_encoded_string
中):
attachments['attachment.pdf'] = {
mime_type: 'application/pdf',
encoding: 'base64',
content: base64_encoded_string
}
但是当我打开收到的电子邮件中的附件pdf文件时,文件已损坏。
现在我提前解码一个Base64字符串,让ActionMailer去编码Base64,没问题
attachments[File.basename('attachment.pdf')] = Base64.decode64(base64_encoded_string)
如何直接将Base64编码的字符串设置为pdf附件?
来自 Rails document:
Mail will automatically Base64 encode an attachment. If you want something different, encode your content and pass in the encoded content and encoding in a Hash to the attachments method.
所以你只是将内容设置为base64字符串,没有指定编码。它会起作用,这就是我在我的项目中所做的:
attachments['attachment.pdf'] = {
mime_type: 'application/pdf',
content: base64_encoded_string
}
这个link应该有帮助。
http://apidock.com/rails/ActionMailer/Base/attachments
attachments['attachment.pdf'] = { mime_type: 'application/pdf',
content: File.read('/path/to/filename.pdf')}
看来我找到了解决办法。如果您提供 base64 字符串作为内容,请确保指定编码。否则 Rails 将对已经编码的字符串进行第二次编码。
attachments['base64_file.pdf'] = {
mime_type: 'application/pdf',
encoding: 'base64',
content: base64_string
}