作为编码文本发送的电子邮件附件
Email attachment sent as encoded text
我要发送一封带有一个或多个附件的电子邮件,我使用 Mail gem 创建电子邮件,这是代码
mail = Mail.new
mail.to = to
mail.subject = subject
mail.body = email_body
mail.content_type = 'text/html'
# attaching a temp file on the rails server
mail.add_file(params["file"].tempfile.path) # path e.g "/tmp/RackMultipart-some-name-text.png"
message_to_send = Google::Apis::GmailV1::Message.new(raw: mail.to_s)
response = @gmail_service.send_user_message("me", message_to_send)
但我没有发送附件,而是收到电子邮件作为原始文本,附件文件作为电子邮件正文中的 Base64 编码字符串。 Here is an example 我发送 attachment/s 时收到的电子邮件是什么样子的。
用于附加文件的邮件 gem documentation 除了将文件添加到邮件对象之外,没有特别说明进行任何其他更改。知道这里发生了什么吗?
我认为在您的情况下,电子邮件正文和附件文件需要作为 multipart/alternative
发送。那么当使用“Mail gem”时,下面的修改呢?
修改后的脚本:
mail = Mail.new
mail.to = to
mail.subject = subject
# I added below script.
mail.part content_type: 'multipart/alternative' do |part|
part.html_part = Mail::Part.new(body: email_body, content_type: 'text/html')
part.text_part = Mail::Part.new(body: email_body)
end
mail.add_file(params["file"].tempfile.path)
message_to_send = Google::Apis::GmailV1::Message.new(raw: mail.to_s)
response = @gmail_service.send_user_message("me", message_to_send)
参考文献:
我要发送一封带有一个或多个附件的电子邮件,我使用 Mail gem 创建电子邮件,这是代码
mail = Mail.new
mail.to = to
mail.subject = subject
mail.body = email_body
mail.content_type = 'text/html'
# attaching a temp file on the rails server
mail.add_file(params["file"].tempfile.path) # path e.g "/tmp/RackMultipart-some-name-text.png"
message_to_send = Google::Apis::GmailV1::Message.new(raw: mail.to_s)
response = @gmail_service.send_user_message("me", message_to_send)
但我没有发送附件,而是收到电子邮件作为原始文本,附件文件作为电子邮件正文中的 Base64 编码字符串。 Here is an example 我发送 attachment/s 时收到的电子邮件是什么样子的。
用于附加文件的邮件 gem documentation 除了将文件添加到邮件对象之外,没有特别说明进行任何其他更改。知道这里发生了什么吗?
我认为在您的情况下,电子邮件正文和附件文件需要作为 multipart/alternative
发送。那么当使用“Mail gem”时,下面的修改呢?
修改后的脚本:
mail = Mail.new
mail.to = to
mail.subject = subject
# I added below script.
mail.part content_type: 'multipart/alternative' do |part|
part.html_part = Mail::Part.new(body: email_body, content_type: 'text/html')
part.text_part = Mail::Part.new(body: email_body)
end
mail.add_file(params["file"].tempfile.path)
message_to_send = Google::Apis::GmailV1::Message.new(raw: mail.to_s)
response = @gmail_service.send_user_message("me", message_to_send)