Extract and delete Email attachment

This article demonstrates how to extract the attachment from an email message and delete the attachment via Spire.Email in C# and VB.NET. Spire.Email supports to work with MSG, EML, EMLX, MHTML, PST, OST and TNEF email file formats. On this article we use .msg message format for example.

Firstly, please view the sample email message with attachments:

Extract and delete Email attachment

How to extract the attachment from an Email message:

[C#]
//Load the mail message from file
MailMessage mail = MailMessage.Load("Test.msg");

//Create a folder named Attachments
if (!Directory.Exists("Attachments"))
{
    Directory.CreateDirectory("Attachments");
}

foreach (Attachment attach in mail.Attachments)
{
     //To get and save the attachment
    string filePath = string.Format("Attachments\\{0}", attach.ContentType.Name);
    if (File.Exists(filePath))
    {
        File.Delete(filePath);
    }
    FileStream fs = File.Create(filePath);
attach.Data.CopyTo(fs);
}
[VB.NET]
'Load the mail message from file
Dim mail As MailMessage = MailMessage.Load("Test.msg")

'Create a folder named Attachments
If Not Directory.Exists("Attachments") Then
    Directory.CreateDirectory("Attachments")
End If

For Each attach As Attachment In mail.Attachments
    'To get and save the attachment
    Dim filePath As String = String.Format("Attachments\{0}", attach.ContentType.Name)
    If File.Exists(filePath) Then
        File.Delete(filePath)
    End If
    Dim fs As FileStream = File.Create(filePath)
    attach.Data.CopyTo(fs)
Next

Extract and delete Email attachment

How to delete the attachment from an Email message:

[C#]
MailMessage mail = MailMessage.Load("Test.msg");
// Delete the attachment by index
mail.Attachments.RemoveAt(0);
// Delete the attachment by attachment name
for (int i = 0; i < mail.Attachments.Count; i++)
{
    Attachment attach = mail.Attachments[i];
    if (attach.ContentType.Name == "logo.png")
    {
        mail.Attachments.Remove(attach);
    }
}
mail.Save("HasDeletedAttachment.msg", MailMessageFormat.Msg);
[VB.NET]
Private Shared Sub Main(args As String())
    Dim mail As MailMessage = MailMessage.Load("Test.msg")
    ' Delete the attachment by index
    mail.Attachments.RemoveAt(0)
    ' Delete the attachment by attachment name
    For i As Integer = 0 To mail.Attachments.Count - 1
        Dim attach As Attachment = mail.Attachments(i)
        If attach.ContentType.Name = "logo.png" Then
            mail.Attachments.Remove(attach)
        End If
    Next
    mail.Save("HasDeletedAttachment.msg", MailMessageFormat.Msg)
End Sub

Extract and delete Email attachment