Как прочитать емейлы с gmail.com

92
14 июня 2019, 11:00

Задача такова:

  1. Получить все емейлы с почтовика (из папки Inbox определённого аккаунта).
  2. Найти нужное письмо и получить из него гиперссылку.

Так вот у меня получилось получить емейлы с помощью библиотеки MailKit, но не могу получить гиперссылку с нужного письма, как это можно сделать с помощью библиотеки MailKit. Вот кусок кода с помощью которого получаю все нужные емейлы

public void GetMessages()
{
    SetUpConnection();
    var inbox = client.Inbox;
    inbox.Open(FolderAccess.ReadOnly);
    var folders = client.GetFolder(client.PersonalNamespaces[0]);
    System.Diagnostics.Debug.WriteLine("Folder test {0}", folders.Count);
    foreach(var folder in folders.GetSubfolders())
    {
        foreach(var subFolder in folder.GetSubfolders())
        {
            if (subFolder.Name.Equals("Вся почта") || subFolder.Name.Equals("All Mail"))
            {
                subFolder.Open(FolderAccess.ReadOnly);
                for (int i = subFolder.Count - 1; i > subFolder.Count - 20; i--)
                {
                    System.Diagnostics.Debug.WriteLine("Subject: " + subFolder.GetMessage(i).Subject);
                    System.Diagnostics.Debug.WriteLine("TextBody: " + subFolder.GetMessage(i).TextBody);
                }
            }
        }
    }
}
Answer 1

Раз уж у тебя есть тело имейла, то есть текст... То ты по нему можешь найти регулярным выражением все ссылки в тексте.

Я нагуглит такую вот регулярочку универсальную:

^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$

Она стремная, но соберет любого рода ссылки, хттп, хттпс, фтп и т.д.

Будет как-то так:

Regex regex = new Regex(@"^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$");
Match match = regex.Match(emailBody);

PS: По каким именно признакам отличить нужное писмо от ненужных я не подскажу ибо не оракул)

READ ALSO
Размеры области графика(Chart)

Размеры области графика(Chart)

Использую компонент Chart для отрисовки некоего графикаРазмер самого компонента Chart прямоугольный(ширина в пикселях больше высоты)

108
No such host is known в Dns.GetHostEntry

No such host is known в Dns.GetHostEntry

При вызове DnsGetHostEntry (или Dns

101
Как в C#(WPF) передать переменную при событии MouseDown?

Как в C#(WPF) передать переменную при событии MouseDown?

У меня есть WrapPanel, с помощью Children[0]MouseDown += *Событие* я хочу добавить событие в которое можно было бы передать переменную, в будущем я планирую...

91
Свой VideoPlayer с паттерном MVVM

Свой VideoPlayer с паттерном MVVM

Подскажите как сделать работу MediaElement с использованием паттерна MVVMЯ сделал дизайн VideoPlayer осталось только с помощью кнопок управлять воспроизведением...

95