class CliApplication::MailLib::Message
Attributes
Public Class Methods
Конструктор инициализирует сообщение электронной почты и компоненты сообщения
@return [None] нет
# File lib/cli_application/mail_lib/message.rb, line 16 def initialize @charset = 'utf-8' @body = '' @subject = '' @from_email = '' @from_name = '' @reply_to = '' @to = Hash.new @cc = Hash.new @bcc = Hash.new @message_id = ::Time.now.to_s.hash.abs.to_s + '.' + ::Time.now.usec.to_s end
Public Instance Methods
Метод добавляет в поле BCC получателя сообщения. Может вызываться несколько раз для добавления нескольких получателей. Особенности обработки. Если в метод передать значения адреса, включающего имя пользователя, то параметр name будет проигнорирован. Name будет взят из переданного адреса. Вторая особенность - при использовании метода отправки :smtp, все BCC-адреса будут удалены.
@param [String] email адрес получателя в формате “user@host.ru” или “Name <user@host.ru>” @param [String] name имя пользователя @return [None] нет @example Примеры использования
msg = CliApplication::MailLib::Message.new msg.add_bcc('user@host.ru', 'Name') #=> добавлено: "Name" и "user@host.ru" msg.add_bcc('USerName <user@host.ru>', 'Name') #=> добавлено: "UserName" и "user@host.ru"
# File lib/cli_application/mail_lib/message.rb, line 161 def add_bcc(email, name = '') res = parse_email(email) if name == '' @bcc[res[:email]] = res[:name] else @bcc[res[:email]] = name end end
Метод добавляет в поле CC получателя сообщения. Может вызываться несколько раз для добавления нескольких получателей. Особенности обработки. Если в метод передать значения адреса, включающего имя пользователя, то параметр name будет проигнорирован. Name будет взят из переданного адреса. Вторая особенность - при использовании метода отправки :smtp, все CC-адреса будут помещены в TO.
@param [String] email адрес получателя в формате “user@host.ru” или “Name <user@host.ru>” @param [String] name имя пользователя @return [None] нет @example Примеры использования
msg = CliApplication::MailLib::Message.new msg.add_cc('user@host.ru', 'Name') #=> добавлено: "Name" и "user@host.ru" msg.add_cc('USerName <user@host.ru>', 'Name') #=> добавлено: "UserName" и "user@host.ru"
# File lib/cli_application/mail_lib/message.rb, line 140 def add_cc(email, name = '') res = parse_email(email) if name == '' @cc[res[:email]] = res[:name] else @cc[res[:email]] = name end end
Метод добавляет в поле TO получателя сообщения. Может вызываться несколько раз для добавления нескольких получателей. Особенности обработки. Если в метод передать значения адреса, включающего имя пользователя, то параметр name будет проигнорирован. Name будет взят из переданного адреса.
@param [String] email адрес получателя в формате “user@host.ru” или “Name <user@host.ru>” @param [String] name имя пользователя @return [None] нет @example Примеры использования
msg = CliApplication::MailLib::Message.new msg.add_to('user@host.ru', 'Name') #=> добавлено: "Name" и "user@host.ru" msg.add_to('USerName <user@host.ru>', 'Name') #=> добавлено: "UserName" и "user@host.ru"
# File lib/cli_application/mail_lib/message.rb, line 119 def add_to(email, name = '') res = parse_email(email) if name == '' @to[res[:email]] = res[:name] else @to[res[:email]] = name end end
Метод очищает все ранее добавленные адреса BCC.
@param [Boolean] warning true для вывода предупреждения об удалении всех адресатов @return [None] нет
# File lib/cli_application/mail_lib/message.rb, line 200 def clear_bcc(warning = false) unless @bcc.empty? if warning warn "Предупреждение: BCC-адреса #{@bcc.inspect} удалены" end @bcc = Hash.new end end
Метод очищает все ранее добавленные адреса CC.
@param [Boolean] warning true для вывода предупреждения об удалении всех адресатов @return [None] нет
# File lib/cli_application/mail_lib/message.rb, line 187 def clear_cc(warning = false) unless @cc.empty? if warning warn "Предупреждение: CC-адреса #{@cc.inspect} удалены" end @cc = Hash.new end end
Метод очищает все ранее добавленные адреса TO.
@param [Boolean] warning true для вывода предупреждения об удалении всех адресатов @return [None] нет
# File lib/cli_application/mail_lib/message.rb, line 174 def clear_to(warning = false) unless @to.empty? if warning warn "Предупреждение: TO-адреса #{@to.inspect} удалены" end @to = Hash.new end end
Метод добавляет к сообщению указание на адрес и имя отправителя. Принимается формат вида “Name <name@host.ru>”. При этом будет осуществлен корректный разбор строки на имя и адрес
@param [String] val строка с адресом электронной почты @return [None] нет @example Примеры использования
msg = CliApplication::MailLib::Message.new msg.from_email = "Name <user@host.ru>" msg.from_email #=> "user@host.ru" msg.from_name #=> "Name" msg.from_email = "user@host.ru" msg.from_email #=> "user@host.ru" msg.from_name #=> ""
# File lib/cli_application/mail_lib/message.rb, line 88 def from_email=(val) res = parse_email(val) @from_name = res[:name] @from_email = res[:email] end
Метод добавляет к сообщению указание на адрес для ответа. Принимается формат вида “Name <name@host.ru>”. При этом будет осуществлен корректный разбор строки на имя и адрес
@param [String] val строка с адресом электронной почты @return [None] нет @example Примеры использования
msg = CliApplication::MailLib::Message.new msg.reply_to = "Name <user@host.ru>" msg.reply_to #=> "user@host.ru"
# File lib/cli_application/mail_lib/message.rb, line 103 def reply_to=(val) res = parse_email(val) @reply_to = res[:email] end
Метод осуществляет сборку (композицию) сообщения в формате MIME для записи в лог файл без преобразований base64
@return [String] сообщение электронной почты в виде форматированного текста
# File lib/cli_application/mail_lib/message.rb, line 35 def to_log message = Array.new message << "From: #{build_rfc822_name(@from_email, @from_name, false)}" unless @from_email == '' message << build_to_adresses("To", @to, false) message << build_to_adresses("Cc", @cc, false) message << build_to_adresses("Bcc", @bcc, false) message << "Reply-To: #{build_rfc822_name(@reply_to)}" unless @reply_to == '' message << "Subject: #{@subject}" message << html_to_text(@body.dup, 65, @charset) message.compact! message.join("\n") end
Метод осуществляет сборку (композицию) сообщения в формате MIME для отправки в Интернет. Поля TO, CC, BCC, Subject преобразуются в бинарную форму через base64
@return [String] сообщение электронной почты в виде форматированного текста
# File lib/cli_application/mail_lib/message.rb, line 53 def to_s message = Array.new message << "From: #{build_rfc822_name(@from_email, @from_name)}" unless @from_email == '' message << "Return-Path: <#{@from_email}>" # http://maksd.info/blog/vse-posty-iz-starogo-bloga/message-75/ message << build_to_adresses("To", @to) message << build_to_adresses("Cc", @cc) message << build_to_adresses("Bcc", @bcc) message << "Reply-To: #{build_rfc822_name(@reply_to)}" unless @reply_to == '' message << "Subject: #{base64_string_encode(@subject)}" message << "Date: #{::Time.zone.now.to_formatted_s(:rfc822) }" message << "MIME-Version: 1.0 (Ruby gem cli_application; version #{::CliApplication::VERSION})" message << "Message-ID: <#{@message_id + '@' + @from_email.split('@').last}>" message += alternative_to_s message += body_to_s(html_to_text(@body.dup, 65, @charset), 'text/plain') message += body_to_s(@body, 'text/html') message += footer_to_s message.compact! message.join("\n") end