Форум программистов, компьютерный форум, киберфорум
Ruby on Rails
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 15.03.2016
Сообщений: 135

Получение электронной почты

29.03.2016, 15:31. Показов 2606. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Необходимо сделать функционал, который идет в почтовый ящик и возвращает мне оттуда непрочитанные письма. Использую гем mail. Делаю так:
Rails
1
2
3
4
5
6
7
8
9
10
require 'mail'
 
Mail.defaults do
      retriever_method :pop3, :address    => "...", :port => 110, :user_name  => '...',:password   => '...',:enable_ssl => false
    end
    
    emails = Mail.last
    puts "от: " + emails['from'].to_s
    puts "Тема: " + emails.subject.to_s
    puts emails.body
С темой и отправителем все в порядке, он возвращает, а вот с телом письма проблема, он возвращает:
Кликните здесь для просмотра всего текста

от: "Иванов иван иванович" <test@test.ru>
Тема: test
This is a multipart message in MIME format.

------=_NextPart_000_004B_01D189B6.C7BF9610
Content-Type: text/plain;
charset="koi8-r"
Content-Transfer-Encoding: 7bit

test


------=_NextPart_000_004B_01D189B6.C7BF9610
Content-Type: application/ms-tnef;
name="winmail.dat"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="winmail.dat"

eJ8+Ih0JAQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA 4wQAAAAAAADnAAEIgAcAGAAAAElQTS5NaWNy
b3NvZnQgTWFpbC5Ob3RlADEIAQOQBgDwBwAAIwAA AAsAAgABAAAAAwAmAAAAAAALACkAAAAAAB4A
cAABAAAABQAAAHRlc3QAAAAAAgFxAAEAAAAWAAAA AdGJnaAVnlrLseqGQ3WFUVU1YCU01gAACwAB
DgAAAAACAQoOAQAAABgAAAAAAAAAWG09jL2eQ0mF s9jfVVdjgMKAAAADABQOAQAAAB4AKA4BAAAA
QQAAADAwMDAwMDAzAXNraWRhbl9yYUBteC5rdWJh bmtyZWRpdC5ydQFza2lkYW5fcmFAbXgua3Vi
YW5rcmVkaXQucnUAAAAAHgApDgEAAABBAAAAMDAw MDAwMDMBc2tpZGFuX3JhQG14Lmt1YmFua3Jl
ZGl0LnJ1AXNraWRhbl9yYUBteC5rdWJhbmtyZWRp dC5ydQAAAAADAN4/glEAAAMA8T8ZBAAAAwAC
wAAAAAAAAEYAAAAAEIUAAAAAAAADACuACCAGAAAA AADAAAAAAAAARgAAAAABhQAAAAAAAAsA0IAI
IAYAAAAAAMAAAAAAAABGAAAAAAaFAAAAAAAACwDV gAggBgAAAAAAwAAAAAAAAEYAAAAADoUAAAAA
AAADANiACCAGAAAAAADAAAAAAAAARgAAAAAYhQAA AAAAAAsA7YAIIAYAAAAAAMAAAAAAAABGAAAA
AIKFAAAAAAAACwAfDgEAAAACAfgPAQAAABAAAABY bT2MvZ5DSYWz2N9VV2OAAgH6DwEAAAAQAAAA
WG09jL2eQ0mFs9jfVVdjgAMA/g8FAAAAAgEJEAEAAADSBAAAzgQAABIKAABMWkZ1d BqwrAMACgBy
Y3BnMTI1gwBQA1JodG1sMQMx+GJpZAQAAzABAwH3 CoD/AqQD5AcTAoAQgw5RBGUIVZsHshG1MgLj
AgBjaArAcHNldDIGAAbDEbUzewRGFEcwErwRwwjv Cfc72xivDjA1EbIMYGMAUAsJmQFkMzYW4Aul
NCAQghwqXA6yAZAOEDkgPBkOsiB4DtAAgDp2PZIi CHBuOgTwaGUAwJhzLW0N4ANgc28BgFotBaBt
HzAO0CIe1W/XH18gaSCQZg3gZSOFIUZedyHfIu8k0AWwZCFGbYM k8A6wdHA6Ly8lVaouIDcuINEv
I5QvAdDYMDQvDiAp0G0hJyf3QncsEC53My4FsGcA L1RSL1JFQy1hDrI0MCI+EcMdxzMjHWAegGVh
ZC2tMTaNDvA8B4ABkCBuYQeAzD1HCfAEkGF0BbEF oCsCMAnwdCTwTSBGIFfpJzEgMR1gKCOwHhAE
kI0JgCAHgA9QdW0pLZ6DHVAwIXN0eWxlNG8RMCEh LS0Koy8qIDJGAiEgRAEQC4BpdKZpAiAEICov
CqNAAhJ0LWYA0GUKpAGRAzB7Qzl1IDBseTpDB0Bp XmIFEBnAOhcKsG4gcGWILTE6FNAxNSA9YLcU
0D2iHWAzPdIZwH03Zo5TNbI4LwrBcC5NIIDGTgWw AMBsLCA7oEDKfQ9QdkDIOgoAwCyQC4A62DBj
bTv5Q/QtBuACQOUg4S4qYDAxBTA7+Tlz5QCQeiPgMTFGIE Z/OwbCIjuFIiwicwBxR4D9BnIiRJog
gDmxGLAloCCwMQtgbmd1HjAj4EVOSC1VUz52YTo7 oG4aa0FgczyhQMJIeXCfBJBOAkM7S9E1oy1w
BRBnBbA4gDtgOTk7+RgjOvcKMjv5McB4ILAFgzFA OKF4OnVuBIFOAVLBTYZ2vwQAOIAJgE5PTiA3
4GwYQN53CYBPf1CPUZ5wCHALUO9Sz1PfVOlWQ0UA wAMQPyP8MTdX31jjNbBPAFrgBJDrIIAwoGwg


------=_NextPart_000_004B_01D189B6.C7BF9610--



А мне нужно только текст письма, те в данном случае "test". Как мне его вывести?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.03.2016, 15:31
Ответы с готовыми решениями:

Получение электронной почты (Mail.ru)
Приложению нужен доступ к почте точнее к входящим письмам, кроме тем писем ничего не могу получить. Кто нибудь делал? Подскажите. Спасибо.

Получение адреса электронной почты пользователя
Здравствуйте. В собственной конфигурации есть справочник Пользователи с реквизитами: 1)идентификаторПользователя -...

Связь электронной почты с бд
Добрый день уважаемые форумчане.Возник вопрос реализации такой возможности как- подключение почты к базе данных,т.е. на почту приходит...

5
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
29.03.2016, 16:58
Письмо multipart.
Есть методы #multipart?, #parts. В вашем случае
Ruby
1
emails.body.parts[0].parts[0].decoded
0
0 / 0 / 0
Регистрация: 15.03.2016
Сообщений: 135
29.03.2016, 17:23  [ТС]
j2FunOnly, да, это работает, но только так:
Ruby
1
email.body.parts[0].decoded
Но есть такой вопрос, эта штука возвращает мне письмо, даже если оно физически удалено из ящика, не говоря о том, что оно было прочитано, и все-равно вовзвращалось. С чем может быть связано это?
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
29.03.2016, 22:16
Цитата Сообщение от Neo-X2006 Посмотреть сообщение
Но есть такой вопрос, эта штука возвращает мне письмо, даже если оно физически удалено из ящика
Проясните ситуацию. Какая штука возвращает письмо, в какой момент происходит удаление письма, в чём отличие удаления письма из ящика от физического(?!) удаления письма из ящика.
0
0 / 0 / 0
Регистрация: 15.03.2016
Сообщений: 135
30.03.2016, 08:11  [ТС]
j2FunOnly, попробую подробней объяснить. Тот код, который я привел выше, работает, возвращает тему, отправителя и тело последнего непрочитанного письма, все ок. Но если это письмо удалить из почтового ящика, и заново запустить код, он все равно вернет туже тему, отправителя и тело, хотя письма уже нету в ящике! Даже если его не удалять, а просто сделать в ящике прочитанным, оно все равно вовзвращается. Думаю что оно лежит в каком-то кеше. Собственно как сделать чтоб оно работало корректно?
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
30.03.2016, 09:54
По поводу удаленного письма сложно сказать... Похоже у вас какой-то частный случай. Что за сервер? Как он помечает письма на удаление, как удаляет?

По поводу прочитанных писем.
POP3 протокол в принципе не имеет механизма получать информацию с сервера о том, что было ли "прочитано" письмо или нет. Здесь задали вопрос но issue было закрыто(?!) без комментариев.

В документации написано Mail.last #=> Returns the last unread email, но данное утверждение расходится с тем, что указано здесь.

Mail::Retriever#last "Get the most recent received email(s)" и принимает всего две опции: :count и :order и ищет письма методом #find

Mail::POP3#find в свою очередь принимает опции :count, :order и :delete_after_find. И ни слова о "прочитанности" письма, как я полагаю в силу ограничения протокола.

Как вариант используйте протокол IMAP, если у вас позволяет сервер.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.03.2016, 09:54
Помогаю со студенческими работами здесь

Протокол электронной почты
По какому протоколу работает электронная почта например mail.ru?? http, tcp?? По какому?

Сервер электронной почты
Доброго времени суток!!! Подскажите пожалуйста, как сделать свой собственный почтовый сервер с собственным доменом? Какой для этого нужен...

Отправка электронной почты в VB 6.0
Добрый день! Такой вопрос, как реализовать отправку сообщений пользователям используя список получателей. К примеру нашел такой код: ...

Проверка электронной почты
function register($username, $email, $password) { // Регистрирует нового пользователя в базе данных. // Подключиться к базе...

Взлом электронной почты
Недавно на сервисе Mail.ru в пункте &quot;информация об использовании почтового ящика&quot; обнаружил, что почта использовалась третьими лицами....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru