无法通过C#从Outlook发送邮件

时间:2013-08-26 07:40:46

标签: c# outlook

我试图向我的同事发送邮件,但在第一封邮件之后,应用程序崩溃了。我收到此消息

用户代码未处理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();
        }
    }
}

我做错了什么?有什么建议吗?

2 个答案:

答案 0 :(得分:4)

MailItem OutlookMail = (MailItem)OutlookApplication.CreateItem(OlItemType.olMailItem);

您正在循环外创建mail item。它需要在循环内创建,因为一旦发送OutlookMail它就不再存在,所以你需要一个新的邮件对象。

答案 1 :(得分:2)

我认为错误消息“项目已被移动或删除”告诉您邮件已经发送,因此您不应更改其“收件人”并再次发送。 请尝试在for循环中创建MailItem,或者在发送邮件之前将所有地址添加到邮件项目中。