Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/40: Рейтинг темы: голосов - 40, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 50

Извлечение и сохранение вложений в почте

13.09.2017, 11:17. Показов 7725. Ответов 9

Студворк — интернет-сервис помощи студентам
Помогите с извлечением вложений в маил почту, сами сообщения получаю с помощью POP3, на гитхабе нашел инфу про библиотеку MailKit но из переведенного гуглом текста понял что с POP3 вытащить нельзя или что то в этом роде. А с Imap какие там действия проделывать надо, так и не понял. Может у кого есть пример или еще инфа каким способом это можно провернуть.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.09.2017, 11:17
Ответы с готовыми решениями:

Отправка вложений по почте
Всем Привет . Помогите разобраться :( Не могу прикрепить картинку чтоб она ото слалась по почте. AnsiString sFile; TIdAttachment...

MOzilla Thunderbird - Извлечение вложений в разные каталоги
Доброго дня! Столкнулся со следующей проблемой: Необходимо извлекать прикрепленные файлы из писем в различные каталоги (пока мне для...

Сохранение email вложений
Салютую из мест, где Цой ждал перемен! Использую V.S. 2015 и библиотеку MailKit. Не совсем получается реализовать сохранение вложений. ...

9
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
13.09.2017, 11:37
Цитата Сообщение от Natanchik Посмотреть сообщение
на гитхабе нашел инфу про библиотеку MailKit но из переведенного гуглом текста понял что с POP3 вытащить нельзя или что то в этом роде.

у этой библиотеки есть примеры, и там есть такая функция:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void SaveAttachments (MimeMessage message)
        {
            #region SaveAttachments
            foreach (var attachment in message.Attachments) {
                if (attachment is MessagePart) {
                    var fileName = attachment.ContentDisposition?.FileName :
                        (attachment.ContentType.Name ?? "attached.eml");
                    var rfc822 = (MessagePart) attachment;
 
                    rfc822.Message.WriteTo (stream);
                } else {
                    var part = (MimePart) attachment;
                    var fileName = part.FileName;
 
                    using (var stream = File.Create (fileName))
                        part.ContentObject.DecodeTo (stream);
                }
            }
            #endregion SaveAttachments
        }
+ если не брать её в учёт эту библиотеку в любом случае класс сообщения содержит поле Attachments (по крайней мере должен). Какими средствами вы пользуетесь вообще для получения почты?
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 50
13.09.2017, 12:15  [ТС]
SeIZVeIZ, вот так получаю необходимые данные
C#
1
2
3
4
5
6
7
8
9
var client = new OpenPop.Pop3.Pop3Client();
            client.Connect("pop.mail.ru", 995, true);
            client.Authenticate("mail", "Password", OpenPop.Pop3.AuthenticationMethod.UsernameAndPassword);
            int countMessage = client.GetMessageCount();
            var count = client.GetMessageCount();
            Pop3Message message = client.GetMessage(count);
            listBox1.Items.Add(message.Headers.Subject);// заголовок
            listBox1.Items.Add(message.Headers.From);//от кого
            listBox1.Items.Add(message.Headers.DateSent);//Дата/Время
и текст
C#
1
2
3
4
5
6
7
 Pop3Message message = default(Pop3Message);
            MessagePart plainTextPart = default(MessagePart);
            string bodyMailTxt = "";
            message = objPOP3.GetMessage(1);
            plainTextPart = message.FindFirstPlainTextVersion();
            bodyMailTxt = plainTextPart.GetBodyAsText();
            MessageBox.Show(plainTextPart.IsAttachment.ToString());
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
13.09.2017, 12:40
Natanchik, вопрос был в средствах, а не как. Какую библиотеку используете, название и версия её
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 50
13.09.2017, 12:48  [ТС]
SeIZVeIZ, OpenPoP.Net 2.0.6.1120 если я правильно понял.
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
13.09.2017, 14:17
Natanchik, Pop3Message а что это за класс? В коде библиотеки такого нету, но в общих чертах у сообщения есть функция FindAllAttachments она Вам и должна помочь
1
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 50
14.09.2017, 07:17  [ТС]
SeIZVeIZ, Это класс OpenPop.Mine.Message. Просто ругается если к нему на прямую обращаться. Спасибо за информацию посмотрю. То есть MailKit мне вообще без надобности?

Добавлено через 1 час 33 минуты
Вот кому надо.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
OpenPop.Pop3.Pop3Client client = new Pop3Client())
        {
            client.Connect("in.mail.Your.Mailserver.com", 110, false);
            client.Authenticate("usernamePop3", "passwordPop3", AuthenticationMethod.UsernameAndPassword);
            if (client.Connected)
            {
                int messageCount = client.GetMessageCount();
                List<Message> allMessages = new List<Message>(messageCount);
                for (int i = messageCount; i > 0; i--)
                {
                    allMessages.Add(client.GetMessage(i));
                }
                foreach (Message msg in allMessages)
                {
                    var att = msg.FindAllAttachments();
                    foreach (var ado in att)
                    {
                        ado.Save(new System.IO.FileInfo(System.IO.Path.Combine("c:\\xlsx", ado.FileName)));
                    }
                }
            }
           }
0
21 / 19 / 4
Регистрация: 15.01.2015
Сообщений: 202
03.11.2017, 16:13
Всем доброго времени суток. У меня похожая задачка... Только вложение нужно не сохранить и прикрепить к MailMessage.
Поясню... Получаю письма с помощью OpenPop.Pop3.Pop3Client потом чутка шаманю с письмом, а затем мне его нужно переслать с помощью System.Net.Mail ну и соответственно подцепить вложение через Attachments.Add(). Можно конечно сохранять во временную папку, а потом цеплять от туда. Но хотелось бы сделать по феншую.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 50
07.11.2017, 08:50  [ТС]
yagami2, Я сохранял все файлы во временной папке, а потом отсылал архивировал ее и отсылал одним файлом обратно, позже скину библиотеку и фрагмент кода если понадобиться
0
21 / 19 / 4
Регистрация: 15.01.2015
Сообщений: 202
07.11.2017, 11:22
Да, я уже понял, что тут никак не извернуться.
Сделал так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public static void Send(Message msg)
{
            MailMessage m = new MailMessage(from, to);
 
...
 
            var attach = msg.FindAllAttachments(); //получаем лист с вложениями
 
            foreach (var ado in attach)
            {
                ado.Save(new System.IO.FileInfo(ado.FileName)); //сохраняем вложения
                m.Attachments.Add(new Attachment(ado.FileName));  //цепляем к новому письму
            }
 
            using (SmtpClient smtp = new SmtpClient(server, port))
            {
                // логин и пароль (если нужны)
                smtp.Credentials = new NetworkCredential("login", "password");
                smtp.EnableSsl = false;
                smtp.Send(m);
                m.Dispose(); //убиваем созданное письмо
            }
 
 
            foreach (var ado in attach)
            {
                 File.Delete(new System.IO.FileInfo(ado.FileName).FullName);  //удаляем вложения
            }
 
}
0
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru