2013-11-14 6 views
1

У меня есть вопрос о net/smtpОтправка HTML электронной почты с вложением

Для HTML писем вы должны установить это в заголовке письма content-type: text/html. Однако, если вы хотите отправить вложение, вы должны изменить его на content-type: multipart/mixed. Что бы сделать html-адрес электронной почты ... не html больше.

Итак, вопрос в том, как я могу выполнить оба? HTML и вложение?

Спасибо

ответ

2

Каждая вставка имеет свой собственный тип MIME

Каждая часть многочастной электронной почты имеет свой собственный тип MIME. Таким образом, хотя тип содержимого электронной почты «multipart/mixed», каждое вложение имеет свой собственный тип MIME (текст, HTML и т. Д.).

Вот пример многочастное письмо от MIME and HTML in Email Дуг Steinwand:

To: [email protected] 
Subject: MIME test 
Content-type: multipart/mixed; boundary="theBoundaryString" 

--theBoundaryString 

Plain text message goes in this part. Notice that it 
has a blank line before it starts, meaning that this 
part has no additional headers. 

--theBoundaryString 
Content-Type: text/html 
Content-Transfer-Encoding: 7bit 
Content-Disposition: inline 
Content-Base: "http://somewebsite.com/" 

<body><font size=4>This</font> is a 
<i>test</i>. 
--theBoundaryString-- 

Здесь вы можете увидеть, что прикрепление текста не имеет никакого явного типа содержимого. Когда вложение не имеет определенного типа содержимого, это US ASCII TEXT. Вложение HTML имеет тип контента «text/html». Могут быть другие вложения, каждый со своим типом MIME.

Рассмотрим с помощью «почты» Gem

mail камень делает отправки и разбора нескольких частей электронной почты очень легко. Он стабилен, хорошо поддерживается и широко используется.

Этого пример из его README показывает, как отправить многосекционную почту с текстовой частью и HTML части:

mail = Mail.deliver do 
    to  '[email protected]' 
    from 'Mikel Lindsaar <[email protected]>' 
    subject 'First multipart email sent with Mail' 

    text_part do 
    body 'This is plain text' 
    end 

    html_part do 
    content_type 'text/html; charset=UTF-8' 
    body '<h1>This is HTML</h1>' 
    end 
end 
+0

Когда я добавить вложение к этому, как «add_file csv_file» только показывает крепежную в почтовом клиенте, нет обычного текста или html. Когда я удаляю html и текстовые части и просто делаю тело «здесь», он правильно отображает текст и вложение. Идеи? – Micah

+0

Это действительно правильно отображается в gmail, но не в Apple Mail. Я думаю, что ошибка зарегистрирована здесь: https://github.com/mikel/mail/issues/590. Я смотрю. – Micah

Смежные вопросы