Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
str = "Mail: " # String.
out = $stdout # Объект IO.
msg.all(arr) # Построить массив строчек.
msg.all(str) # Конкатенировать с str.
msg.all(out) # Вывести на stdout.
Наконец, покажем еще, как вернуть только тело сообщения, игнорируя все заголовки.
module Net
class POPMail
def body
# Пропустить байты заголовка
self.all[self.header.size..-1]
end
end
end
Если вы предпочитаете протокол IMAP, а не POP3, обратитесь к разделу 18.2.5
18.2.4. Отправка почты по протоколу SMTP
Это понял бы и пятилетний ребенок. Дайте мне пятилетнего ребенка.
Название «простой протокол электронной почты» (Simple Mail Transfer Protocol — SMTP) не вполне правильно. Если он и «простой», то только по сравнению с более сложными протоколами.
Конечно, библиотека
smtp.rb
В классе
Net::SMTP
new
start
new
localhost
Метод
start
• server — доменное имя или IP-адрес SMTP-сервера; по умолчанию это
"localhost"
• port — номер порта, по умолчанию 25;
• domain — доменное имя отправителя, по умолчанию
ENV["HOSTNAME"]
• account — имя пользователя, по умолчанию
nil
• password — пароль, по умолчанию
nil
• authtype — тип авторизации, по умолчанию
:cram_md5
Обычно большую часть этих параметров можно не задавать.
Если метод
start
SMTP
У объекта
SMTP
sendmail
• source — строка или массив (или любой объект, у которого есть итератор
each
• sender — строка, записываемая в поле «from» сообщения;
• recipients — строка или массив строк, описывающие одного или нескольких получателей.
Вот пример отправки сообщения с помощью методов класса:
require 'net/smtp'
msg = <<EOF
Subject: Разное
... пришла пора
Подумать о делах:
О башмаках, о сургуче,
Капусте, королях.
И почему, как суп в котле,
Кипит вода в морях.
EOF
Net::SMTP.start("smtp-server.fake.com") do |smtp|
smtp.sendmail msg, '[email protected]', '[email protected]'
end
Поскольку в начале строки находится слово
Subject:
Разное
Имеется также метод экземпляра
start
new
start
require 'net/smtp'
msg = <<EOF
Subject: Ясно и логично
"С другой стороны, - добавил Тарарам, -
если все так и было, то все именно так и было.
Если же все было бы так, то все не могло бы быть
не так. Но поскольку все было не совсем так, все
было совершенно не так. Ясно и логично!"
EOF
smtp = Net::SMTP.new("smtp-server.fake.com")
smtp.start
smtp.sendmail msg, '[email protected]', '[email protected]'
Если вы еще не запутались, добавим, что метод экземпляра может принимать ещё и блок:
require 'net/smtp'
msg = <<EOF
Subject: Моби Дик
Зовите меня Измаил.
EOF
addressees = ['[email protected]', '[email protected]']
smtp = Net::SMTP.new("smtp-server.fake.com")
smtp.start do |obj|
obj.sendmail msg, '[email protected]', addressees
end
Как видно из примера, объект, переданный в блок (
obj
smtp
Существует еще метод экземпляра со странным названием
ready
sendmail
adapter
Net::NetPrivate::WriteAdapter
write
append