Хотите создать приложение windows с помощью C# для чтения и отправки почты с помощью outlook
Я могу отправить письмо, используя приведенный ниже код:
private void btn_Send_Click(object sender, EventArgs e) { try { Outlook._Application _app = new Outlook.Application(); Outlook.MailItem mail = (Outlook.MailItem)_app.CreateItem(Outlook.OlItemType.olMailItem); mail.To = txt_To.Text; mail.Subject = txt_Subject.Text; mail.Body = txt_Message.Text; mail.Importance = Outlook.OlImportance.olImportanceNormal; ((Outlook._MailItem)mail).Send(); MessageBox.Show("Your Message has been successfully sent.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
Но я столкнулся с ошибкой при чтении писем из outlook, ниже приведен мой код для чтения почты:
private void btn_Receive_Click(object sender, EventArgs e) { try { Outlook._Application _app = new Outlook.Application(); Outlook._NameSpace _ns = _app.GetNamespace("MAPI"); Outlook.MAPIFolder inbox = _ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox); _ns.SendAndReceive(true); dt = new DataTable("Inbox"); dt.Columns.Add("Subject", typeof(string)); dt.Columns.Add("Sender", typeof(string)); dt.Columns.Add("Body", typeof(string)); dt.Columns.Add("Date", typeof(string)); dataGrid.DataSource = dt; foreach (Outlook.MailItem item in inbox.Items) { dt.Rows.Add(new object[] { item.Subject, item.SenderName, item.HTMLBody, item.SentOn.ToLongDateString() + "" + item.SentOn.ToLongDateString() }); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
Ошибка: невозможно привести COM-объект типа 'System._ComObject "к интерфейсу типа" Майкрософт.Офис.Взаимодействие.Прогноз.Сообщения'. Эта операция не удалась, так как вызов QueryInterface на COM-компоненте для интерфейса с IID '{00063034-0000-0000-C000-000000000046}' не удался из-за следующей ошибки: такой интерфейс не поддерживается (исключение из HRESULT: 0*80004002 (E_NOINTERFACE)).
Что я уже пробовал:
After googling i found that we have to check If Item.Class=43, but when I try putting that If like: (if(item.Class=43)) condition, it shows a error stating Property or indexer '_MailItem.Class' cannot be assigned to -- it is read only
Пожалуйста, помогите мне исправить это.
F-ES Sitecore
Это два равных для сравнения
если(пункт.Класс==43)
код, с которого вы скопировали, был vb.net который использует только один.