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#]
using Spire.Email;
using System.IO;


namespace ExtractAttachment 
{
    class Program
    {
        static void Main(string[] args)
        {
            //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]
Imports Spire.Email
Imports System.IO


Namespace ExtractAttachment
	Class Program
		Private Shared Sub Main(args As String())
			'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
		End Sub
	End Class
End Namespace

Extract and delete Email attachment

How to delete the attachment from an Email message:

[C#]
using Spire.Email;


namespace DeleteAttachment 
{
    class Program
    {
        static void Main(string[] args)
        {
            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]
Imports Spire.Email


Namespace DeleteAttachment
	Class Program
		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
	End Class
End Namespace

Extract and delete Email attachment