Социальные сети

Если отправка html письма с аттачами встроенными средствами RoR в документации более-менее отражена, то с отправкой письма в формате HTML со встроенными картинками (emdedded images/objects) дело обстоит куда хуже. Работающий вариант удалось подобрать путём длительных алхимических манипуляций.

Контроллер:


mail = Mailer.create_mailer
mail.set_content_type("multipart/related")

Mailer.deliver(mail)

Тут всё понятно. Строка с content_type важна -- в принципе, ActionMailer и сам определяет тип письма, но при этом MS Office Outlook, например, картинок в упор не видит.

Самое интересное в модели (наверняка можно записать всё гораздо приятнее и короче, но пока не было времени причесать):


class Mailer < ActionMailer::Base

def mailer(sent_at = Time.now)

@subject = 'here will be dragons'
@body = {}
@recipients = 'addressee1@domain.com,addressee2@domain.com,addressee3@domain.com'
@from = 'from_name <from@address.com>'
@sent_on = sent_at
@headers = {}

part :content_type => 'text/html',
:body => '<h4>hohoho</h4><img src="cid:part1@domain.com">',
:content_disposition => 'inline',
:headers => { 'content-id' => '<html-1@domain.com>' }

part :content_type => 'image/jpeg',
:content_disposition => 'inline',
:transfer_encoding => 'base64',
:body => File.read(RAILS_ROOT+"/files/some_filename.jpg"),
:filename => 'some_filename.jpg',
:headers => { 'content-id' => '<part1@domain.com>' }
end

end

Письмо представляет собой набор кусков разных типов, которые в любых количествах присоединяются через метод part.

В процессе выяснилось, что у ruby [i386-mswin] есть глюк при чтении бинарных файлов через File.read(путь к файлу), выдаётся только несколько сотен байт из начала (что-то там с pipes, мало что в этом понимаю). Поэтому я пользовался конструкцией File.open(путь к файлу,"rb").read. Впрочем, редко кто держит рабочие версии ror-приложений под виндами, так что это не очень страшно.

Мне не удалось пока заставить заработать html, подключаемый из view. Как видно из примера, html часть просто присоединяется прямо в коде и снабжается необходимым content-type id и disposition.

Назначение content-id долго отказывалось работать, а без этого никакой embedding, понятно, не действует. Порылся в исходниках ActonMailer (TMail), мало что понял, но там видно, что для content-id используется какой-то фильтр на формат. Попробовал разные варианты -- сработал вышеописанный, в формате <идентификатор@домен>.

Вобщем, у меня всё это сработало в GMail, MS Office Outlook, Mozilla Thunderbird и Safari Mail. Дольше всех сопротивлялись Outlook и Thunderbird -- последний сдался только тогда, когда я указал content-id для html части письма, а Outlook успокоился на content-type: multipart/related для всего письма. Самым добрым оказался GMail -- видимо, внутренний парсер там так колбасит сообщения, что ему не очень важен правильный формат, он так или и наче разберётся, что там пишут.




















Вам это будет интересно!

  • Images in my mind
  • Quelques images de Paris…
  • Треккинг в Непале. День 3
  • История про Кошку и ее Человека
  • Безымянный 52408


  • Последние новости


    Шаг 5. Выбираем фирменное наименование организации

    Если вы собираетесь регистрировать новое юридическое лицо, то перед вами неизбежно встают необходимость выбора его названия и ряд сопутствующих вопросов. Следует ли проверять выбранное наименование организации на уникальность перед подачей документов на регистрацию? Можно ли зарегистрировать компанию с таким же наименованием, как и у другой, уже существующей орган...
    Читать далее »

    Шаг 4. Выбор системы налогообложения

    Действующее налоговое законодательство позволяет налогоплательщику в некоторых случаях значительно уменьшить сумму уплачиваемых налогов путем грамотного выбора режима налогообложения. Выделяют общий режим налогообложения и специальные налоговые режимы, которые следует отличать от льготных режимов. При применении общего режима налогообложения налог...
    Читать далее »

    Аренда помещений

    Самым тесным образом с фактическим адресом организации связана Аренда Ею помещений, необходимых для налаживания выбранных видов деятельности. Для деятельности любой организации необходимо помещение. Однако недвижимость стоит сейчас очень дорого, и лишь немногие организации в состоянии приобрести помещение в собственность. В связи с этим значительная част...
    Читать далее »

    Шаг 3. Выбираем место нахождения организации

    МЕСТО НАХОЖДЕНИЯ ОРГАНИЗАЦИИ, ЕЕ ЮРИДИЧЕСКИЙ, ФАКТИЧЕСКИЙ И ПОЧТОВЫЙ АДРЕСА В ГК РФ приведено понятие «место нахождения юридического лица» – так называемый юридический адрес, официально зарегистрированный в ЕГРЮЛ. Однако юридическое лицо может располагаться и по другому адресу – фактическому. В гражданском законодательстве не содержит...
    Читать далее »

    Карточка

    С образцами подписей и оттиска печати ...
    Читать далее »

    Форма

    Документа, подтверждающего наличие лицензии Приложение 26 СЕРТИФИКАТ СООТВЕТСТВИЯ ...
    Читать далее »

    Уведомление

    О регистрации юридического лица в территориальном органе Пенсионного фонда Российской Федерации по месту нахождения На территории Российской Федерации Приложение 22 Свидетельство О регистрации страхователя в территориальном фонде Обязательного медицинского страхования При обязательном мед...
    Читать далее »