Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Отправка html-сообщения через e-mail


Автор: ilnursoft 5.6.2012, 16:46
Добрый день!

не могу никак сделать следующее: необходимо послать сообщение по электронке у которого тело письма html со встроеными изображениями.

вот код:
Код

require 'mail'
require 'base64'

Mail.defaults do
  delivery_method :smtp, { :address   => "smtp.mi.ru",
                           :port      => 587,
                           :domain    => "HELO",
                           :user_name => "myu",
                           :password  => "qwerty",
                           :authentication => 'plain',
                           :enable_starttls_auto => true }
end

fn = 'img1.jpg'
src="cid:#{fn}"
new_tag = "<img src='#{src}'>"
puts new_tag
my_mail = Mail.deliver do
  to      '[email protected]'
  from    '[email protected]'
  subject 'Test mail using ruby gem mail '

  add_file(:filename => 'img1.jpg', :content => (File.open('img1.jpg', 'rb') { |f| f.read }))

  html_part do
    content_type 'text/html; charset=UTF-8'
    body "<h1>This is HTML</h1> #{new_tag}  <h1>END This is HTML</h1> "
  end 

end


как я понимаю в html письме должна ссылка на изображение вида <img src="cid:внутренняя_ссылка_на_рисунок">

как определить и связать "внутренняя_ссылка_на_рисунок" с изображением.

Автор: source777 6.6.2012, 13:43
Как вариант:
Код

mail.attachments.first.content_id


P.S. Я бы посоветовал не использовать блок deliver в нетривиальных случаях. Сделайте обычными методами mail = Mail.new.., mail.add_file..., ..., mail.deliver
Так и читабельнее получится и проще для отладки в случае чего.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)