我试图向我的同事发送邮件,但在第一封邮件之后,应用程序崩溃了。我收到此消息
用户代码未处理COMException。 "项目已被移动或删除。"
private void SendMail()
{
var usersEmailAddresses = Factory.Users.List(); // .List() lists all the data from the Users table.
Application OutlookApplication = new Application();
MailItem OutlookMail = (MailItem)OutlookApplication.CreateItem(OlItemType.olMailItem);
OutlookMail.Subject = @"TEST/Ushqimi i caktuar per sot";
MailBody //region, here I assign the MailBody Text.
for (int index = 0; index < usersEmailAddresses.Count; index++)
{
OutlookMail.To = usersEmailAddresses[index].Email; //Here is where I get the exception, AFTER trying to assign the second email.
if (usersEmailAddresses[index].RecieveEmail && !usersEmailAddresses[index].IsOnVacation)
{
((_MailItem)OutlookMail).Send();
}
}
}
我做错了什么?有什么建议吗?
答案 0 :(得分:4)
MailItem OutlookMail = (MailItem)OutlookApplication.CreateItem(OlItemType.olMailItem);
您正在循环外创建mail item
。它需要在循环内创建,因为一旦发送OutlookMail
它就不再存在,所以你需要一个新的邮件对象。
答案 1 :(得分:2)
我认为错误消息“项目已被移动或删除”告诉您邮件已经发送,因此您不应更改其“收件人”并再次发送。 请尝试在for循环中创建MailItem,或者在发送邮件之前将所有地址添加到邮件项目中。