Jag hade en liten bugg i min SMTP COM Interop.. Den hanterar flera bilagor (attachments) och enligt vad jag snabbt tittade upp på nätet så borde de ha räckt att köra .Dispose på MailMessage-objektet för att fria filen som jag satt som bilaga. Det gjorde det dock inte, utan filen gick inte att radera och då det gamla VB6 programmet som använder komponenten försöker radera bilagorna den satt till e-posten, så blev det ju strul med ”Permission denied” felmeddelanden.

Annars var det ju klart och tydligt vad det var frågan om men i all hast blev jag bortblandad då det varit så mycket andra rättighetsfel med Windows 7 och COM interop:en, så jag sökte först felet på fel ställe, men till sist kom jag på att varje bilaga är ett eget objekt som man måste köra dispose på för att fria upp den. Man kan alltså inte alltid lita på det som står på nätet och samma gäller även denna blogg. Lita inte okritiskt på det jag skriver, utan kolla upp det med andra källor också, för jag kan ha fel. Även om det är sällan.. 😉

För er som tänker programmera SMTP med .Net, när ni lägger till bilagor till e-posten så måste ni fria upp bilagan separat. Se exemplet nedan (jag lämnade bort största delen av koden för jag orkar inte skriva om den men om nån är intresserad kan jag lägga upp ett komplett exempel):

Dim oAtt As Attachment

MailMessage.Attachment.Add(oAtt)

oAtt.Dispose

Advertisements