可以';t通过C#从Outlook发送邮件

本文关键字:Outlook 通过 可以 | 更新日期: 2023-09-27 18:28:57

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

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

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

可以';t通过C#从Outlook发送邮件

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

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

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