Вывод писем (работа с IMAP) - C#
Формулировка задачи:
Всем привет. Хочу научится работать с Imap. с помощью dll mail.dll (limilabs.com)
Прохожу успешно логин. и пытаюсь вывести письма. после вывода первых писем, вылазиет ошибка.
полагаю, нужна синхронизация. но зачем? У меня 1 поток!
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);
}
}
}Решение задачи: «Вывод писем (работа с IMAP)»
textual
Листинг программы
Invoke(new Action(() => i = listView1.Items.Add(adress).Index)); Invoke(new Action(() => listView1.Items[i].SubItems.Add(subj)));