Вывод писем (работа с IMAP) - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Хочу научится работать с Imap. с помощью dll mail.dll (limilabs.com) Прохожу успешно логин. и пытаюсь вывести письма. после вывода первых писем, вылазиет ошибка.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Windows.Forms;
using Limilabs.Mail;
using Limilabs.Client.IMAP;
using Limilabs.Mail.MIME;
using Limilabs.Mail.Headers;
 
namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void conn_Click(object sender, EventArgs e)
        {
            getm.RunWorkerAsync();
        }
 
        private void getm_DoWork(object sender, DoWorkEventArgs e)
        {
            using (Imap imap = new Imap())
            {
                imap.Connect("imap.yandex.ru");
                try
                {
                    imap.Login(login.Text, pass.Text);
                    MessageBox.Show("Все ок!");
                }
                catch
                {
                    MessageBox.Show("Неверный логин или пароль", "Ошибка!");
                }
 
                imap.SelectInbox();
                List<long> uids = imap.Search(Flag.Unseen);
 
                foreach (long uid in uids)
                {
                    string eml = imap.GetMessageByUID(uid);
                    IMail email = new MailBuilder()
                        .CreateFromEml(eml);
 
                    // From
                    int i = 0;
                    foreach (MailBox m in email.From)
                    {
                        addrow(m.Address, m.Name);
                    }
 
                }
                imap.Close();
 
            }
        }
 
        private void addrow(string adress, string subj)
        {
            int i = 0;
            i = listView1.Items.Add(adress).Index;
            listView1.Items[i].SubItems.Add(subj);
 
        }
    }
}
полагаю, нужна синхронизация. но зачем? У меня 1 поток!

Решение задачи: «Вывод писем (работа с IMAP)»

textual
Листинг программы
Invoke(new Action(() => i = listView1.Items.Add(adress).Index));
Invoke(new Action(() => listView1.Items[i].SubItems.Add(subj)));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы