Rails - ActionMailer иногда показывает вложения перед содержимым электронной почты? - PullRequest
5 голосов
/ 28 марта 2011

Как я могу сделать так, чтобы ActionMailer всегда отображал вложения в нижней части сообщения: HTML, TXT, вложения ....

Проблема в том, что вложение здесь представляет собой текстовый файл:

----==_mimepart_4d8f976d6359a_4f0d15a519e35138763f4
Date: Sun, 27 Mar 2011 13:00:45 -0700
Mime-Version: 1.0
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename=x00_129999.olk14message
Content-ID: <4d8f976d49c72_4f0d15a519e351387611f@railgun64.53331.mail>

Спасибо

Ответы [ 3 ]

5 голосов
/ 28 мая 2012

Я знаю, что уже есть принятый ответ, но переключение порядка attachments[] и mail() не решило его для меня.Что отличается от моей ситуации, так это то, что я пытался прикрепить вложение текстового файла (.txt)

. Для меня работает установка значений по умолчанию content_type и parts_order для почтовой программы.

MyMailer < ActionMailer::Base

    default :from => "Awesome App <support@example.com>",
            :content_type => 'multipart/alternative',
            :parts_order => [ "text/html", "text/enriched", "text/plain", "application/pdf" ]

    def pdf_email(email, subject, pdfname, pdfpath)
      attachments[pdfname] = File.read(pdfpath)
      mail(:to => email, :subject => subject)
    end

    def txt_email(email, subject, filename, filebody)
      attachments[filename] = filebody
      mail(:to => email, :subject => subject)
    end
end

Если вы пытаетесь отправить электронное письмо в Rails 3 с простым текстовым файлом (.txt), попробуйте добавить :content_type и parts_order к вашим значениям по умолчанию, чтобы текстовый файл не отображался над сообщением вВаш электронный адрес.

4 голосов
/ 01 марта 2012

У меня была та же проблема, и в моем случае решение было поменять местами вложения и почтовые линии.Сначала прикрепите, затем позвоните.

Рельсы 3

НЕПРАВИЛЬНО

def pdf_email(email, subject, pdfname, pdfpath)
  mail(:to => email, :subject => subject)
  attachments[pdfname] = File.read(pdfpath)
end

ХОРОШО

def pdf_email(email, subject, pdfname, pdfpath)
  attachments[pdfname] = File.read(pdfpath)
  mail(:to => email, :subject => subject)
end
0 голосов
/ 18 августа 2011

это код Rail 2.3 (может быть немного другой в rails3)

просто переместите текстовую часть перед вложением

recipients  to@domain.com
from      me@domain.com
subject   "some subject"
content_type  "multipart/mixed"

part "text/plain" do |p|
  p.body = render_message 'my_message' #this is template file
end

attachment "application/octet-stream" do |a|
  a.body = File.read("some_file.jpg")
  a.filename = 'name.jpg'
end
...