0x80040109 fout wanneer Outlook Object Model wordt gebruikt met een IMAP-account in Outlook 2013

Symptomen

Wanneer u het Outlook-objectmodel gebruikt om een UserProperty-object toe te voegen aan een e-mailbericht voor een IMAP-account in Microsoft Outlook 2013, ontvangt u het volgende foutbericht:

Uitvoeringsfout '-2147221239 (80040109)': de bewerking kan niet worden uitgevoerd omdat het bericht is gewijzigd.

Opmerking

  • Dit probleem treedt alleen op wanneer u de code snel achter elkaar uitvoert om de tweede keer een UserProperty-object toe te voegen aan hetzelfde e-mailbericht.
  • Dit probleem treedt niet op wanneer het voorbeeldvenster is uitgeschakeld of als u schakelt tussen e-mailberichten voordat u de code voor de tweede keer uitvoert.

Tijdelijke oplossing

Als u dit probleem wilt omzeilen, sluit u alle items nadat u de code hebt uitgevoerd om een UserProperty-object toe te voegen aan een e-mailbericht. Of voer de code slechts één keer uit voor hetzelfde e-mailbericht. Dit probleem treedt op omdat het bewerken en opslaan van een e-mailbericht meerdere keren voor een IMAP-account inefficiënt is. Wanneer een e-mailbericht wordt opgeslagen, moet het als een volledig nieuw e-mailbericht naar de server worden geüpload en wordt het oorspronkelijke e-mailbericht verwijderd. Als het voorbeeldvenster is ingeschakeld, blijft het oorspronkelijke e-mailbericht in het geheugen, terwijl het onderliggende e-mailbericht wordt gewijzigd vanwege de meerdere uploads.

Voer de volgende stappen uit om dit probleem te reproduceren:

  1. Selecteer een e-mailbericht in de berichtenlijst.

  2. Zorg ervoor dat het voorbeeldvenster is ingeschakeld.

  3. Voer de volgende code voor hetzelfde e-mailbericht twee keer snel achter elkaar uit:

    Function ReproCode()
    Dim oExp As Outlook.Explorer
    Dim oSel As Outlook.Selection
    Dim oMail As Outlook.MailItem
    Dim oProp As UserProperty
    Dim oProps As UserProperties
    
    Set oExp = Application.ActiveExplorer
    Set oSel = oExp.Selection
    
    For iCount = 1 To oSel.Count
    If oSel.Item(iCount).Class = OlObjectClass.olMail Then
    Set oMail = oSel.Item(iCount)
    Set oProps = oMail.UserProperties
    Set oProp = oProps.Add("TextProp", olText, False, 1)
    oProp.Value = "Sample Text"
    oMail.Save
    End If
    Next iCount
    
    Set oExp = Nothing
    Set oSel = Nothing
    Set oMail = Nothing
    Set oProp = Nothing
    Set oProps = Nothing
    
    End Function
    

Opmerking

Microsoft verstrekt programmeervoorbeelden alleen ter illustratie, zonder expliciete of impliciete garantie. daaronder mede begrepen, maar niet beperkt tot impliciete garanties met betrekking tot de verkoopbaarheid en/of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal VBScript, alsmede met de hulpprogramma's waarmee procedures worden gemaakt en waarmee fouten in procedures worden opgespoord. Ondersteuningsmedewerkers van Microsoft kunnen helpen bij de uitleg over de functionaliteit van een bepaalde procedure. Deze medewerkers zullen de voorbeelden echter niet aanpassen om extra functionaliteit toe te voegen of om procedures te maken die aan uw specifieke eisen voldoen.