The*_*dis 1 email ruby-on-rails actionmailer email-attachments ruby-on-rails-3.2
我的 Rails 3.2 应用程序中有一个电子邮件客户端,用于将电子邮件存储在数据库中。电子邮件的内容使用tinyMCE保存,附件使用Paperclip保存。这些电子邮件是使用我创建的邮件程序发送的,如下所示:
class MessageMailer < ActionMailer::Base
def messaging_message(msg)
begin
Message.transaction do
@msg = msg
msg.attached_files.each do |attached_file|
attachments[attached_file.file_file_name] = File.read("#{Rails.root.to_s}/public/attachments/messaging/messages/#{msg.id}/#{attached_file.id}/#{attached_file.file_file_name}")
end
mail_msg = mail(
to: Message.convert_to_mail_addresses(msg.to_recipients), # This converts the list of Recipient objects into "emai@address.com; email2@address.com" format
cc: Message.convert_to_mail_addresses(msg.cc_recipients),
bcc: Message.convert_to_mail_addresses(msg.bcc_recipients),
from: msg.access_department.email,
subject: msg.subject,
body: msg.body,
content_type: "text/html"
)
# Sets the user_name, password and domain based on the FROM address the user selected in the app
mail_msg.delivery_method.settings.merge!(msg.access_department.mail_settings)
end
rescue Exception => e
Rails.logger.error "MODEL: '#{class_name}' - METHOD: '#{method_name}'"
Rails.logger.error " -> ERROR: #{e}"
Rails.logger.error "BACKTRACE:"
Rails.logger.error "#{e.backtrace.join("\n ")}"
return false
else
return true
end
end
end
Run Code Online (Sandbox Code Playgroud)
然后我使用以下代码运行此操作:
msg = Message.find(20)
MessageMailer.messaging_message(m).deliver
Run Code Online (Sandbox Code Playgroud)
如果没有附件,这就像一个魅力。但是,当我有附件时,它们会作为一长串字符出现在电子邮件正文中,即 mime 类型的文本版本。这是一个例子:
-==_mimepart_54be256d7d18_13ad78fe74390bc 内容类型:文本/纯文本;字符集=UTF-8 内容传输编码:7 位
Lorem ipsum dolor sat amet,per quot antiopam elaboraret cu,ei Epicur Perfecto has。Ut utinam Discere Legimus vis, an quidam habemus menandri nec。Eam dolores suavitate dissentias in, wisi vitae at his. Qui etaugue 结论是,大海的动力是无限的。永远的骚扰经历 id mea,est corpora prodessetreferrentur ex。尽我所能。Mea te impetus vienduminterestesset, erroribusreferrentur mea ex。
Possit ornatus laboures te eos。Per id unum mucius insolens, ne quo elitr ludus nusquam。Amet possit persius eam cu。没有提名。Ut zril persecuti eum,eu ius graece tempor,一个平庸的争论。
我的个人签名
----==_mimepart_54be256d7d18_13ad78fe74390bc 内容类型:image/jpeg;字符集=UTF-8;filename=Side_rolling_bulk_vessels_Klein.jpg 内容传输编码:base64 内容处置:附件;文件名=Side_rolling_bulk_vessels_Klein.jpg 内容 ID:<54be256c7da70_13ad78fe74389af@Theo-Ubuntu-Laptop.mail> /9j/4AAQSkZJRgABAgEASABIAAD/4RZ1RXhpZgAATU0AKgAAAAgABwESAAMA AAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAag EoAAMAAAABAAIAAAEx AAIAAABAAAAcgEyAAIAAAAUAAAAjYdpAAQAAAABAAAApAAAANAAAABIAAAA AQAAAEgAAAABQWRvYmUgUGhvdG9zaG9wIENTIFdpbmRvd3MAMjAwOTowMzoy NCAxMDo0NDo1OAAAAAAAA6ABAAMAAAAB//8AAKACAAQAAAABAAABVKADAAQA AAABAAAB 4wAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAA AAEAAAEmasgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAAAABU/AAAA AAAAAEgAAAABAAAASAAAAAH/2P/gABBKRklGAAECAQBIAEgAAP/tAAxBZG9i ZV9DTQAC/+4ADkFkb2JLAGSAAAAAAf/bA IQADAGICAKIDAKJDBELCgsRFQ8M DA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAENCwsNDg0QDg4QFA4ODhQUDg4ODh........
我尝试重新排序我的代码,按照 Mail gem 中显示的格式重写它,以及显式添加附件及其 mime 类型并对自己进行编码,但我仍然得到相同的结果。
谁能解释一下我哪里出错了?
小智 5
我遇到了与上面相同的问题。
content_type: "text/html"只需从代码中删除该行即可。
Rails 将自动发送带有附件的多部分电子邮件,该电子邮件与顶层正确嵌套multipart/mixed,第一部分包含multipart/alternative纯文本和 HTML 电子邮件消息。
有关更多信息,请参阅Rails - 发送带附件的电子邮件
| 归档时间: |
|
| 查看次数: |
2476 次 |
| 最近记录: |