Send, Receive, Extract Emails

Send, Receive, Extract Emails (13)

In the previous article, we have introduced how to read a PST file and get the folder information from it. This article will show you how we can add existing mail message files into PSF file for archiving.

Step 1: Load a PST file from disk into an instance of OutlookFile class.

OutlookFile outlookFile = new OutlookFile(@"C:\Users\Administrator\Documents\Outlook Files\Sample.pst");

Step 2: Load a MSG file into an instance of OutlookItme class.

OutlookItem item = new OutlookItem();
item.LoadFromFile(@"C:\Users\Administrator\Documents\Outlook Files\Sample.msg");

Step 3: Get inbox folder from PST file.

OutlookFolder inboxFolder = outlookFile.RootOutlookFolder.GetSubFolder("Inbox");

Step 4: Add the MSG file to inbox folder.

inboxFolder.AddItem(item);

Full Code:

[C#]
using Spire.Email;
using Spire.Email.Outlook;
using System;

namespace AddMessageToPSTFile
{
    class Program
    {
        static void Main(string[] args)
        {
            OutlookFile outlookFile = new OutlookFile(@"C:\Users\Administrator\Documents\Outlook Files\Sample.pst");
            OutlookItem item = new OutlookItem();
            item.LoadFromFile(@"C:\Users\Administrator\Documents\Outlook Files\Sample.msg");
            OutlookFolder inboxFolder = outlookFile.RootOutlookFolder.GetSubFolder("Inbox");
            inboxFolder.AddItem(item);
            Console.WriteLine("Completed");
        }
    }
}
[VB.NET]
Imports Spire.Email
Imports Spire.Email.Outlook

Namespace AddMessageToPSTFile
	Class Program
		Private Shared Sub Main(args As String())
			Dim outlookFile As New OutlookFile("C:\Users\Administrator\Documents\Outlook Files\Sample.pst")
			Dim item As New OutlookItem()
			item.LoadFromFile("C:\Users\Administrator\Documents\Outlook Files\Sample.msg")
			Dim inboxFolder As OutlookFolder = outlookFile.RootOutlookFolder.GetSubFolder("Inbox")
			inboxFolder.AddItem(item)
			Console.WriteLine("Completed")
		End Sub
	End Class
End Namespace

Spire.Email supports to create Outlook message (MSG) files with rich text bodies and attachments in C# and VB.NET. The RTF body supports to set the formatting for the font, such as in bold, underline and set the color and add lists to the message body. It makes the outlook message vivid and clear to view. Here comes to the steps of how to use Spire.Email to create and save the Outlook message with RTF body and attachment in C#.

Step 1: Create an instance of MailMessage class and specify sender and recipient address.

MailAddress addressFrom = new MailAddress("daisy.zhang@e-iceblue.com", "Daisy Zhang");
MailAddress addressTo = new MailAddress("susanwong32@outlook.com");
MailMessage mail = new MailMessage(addressFrom, addressTo);

Step 2: Add the subject, message body and attachment of the message.

mail.Subject = "This is a test message";

string htmlString = @"
   <p>Dear Ms. Susan,</p>
   <p>This is an example of creating an <b>outlook message</b> <u>(msg)</u>.</p>
   <ul>
   <li> Create a message with RTF file </li>
   <li> Create a message with attachment</li>
   </ul>
   <p style='color:red'>This text is in red </p>
   
   <p>Best regards, </p>
   <p>Daisy </p>";  
 mail.BodyHtml = htmlString;
 
 mail.Attachments.Add(new Attachment("logo.png"));

Step 3: Save the message as MSG format.

mail.Save("Sample.msg", MailMessageFormat.Msg);

Effective screenshot:

Creating MSG Files with RTF body and attachment

Full codes:

using Spire.Email;

namespace CreatingMSGFiles
{
    class Program
    {
        static void Main(string[] args)
        {
            MailAddress addressFrom = new MailAddress("daisy.zhang@e-iceblue.com", "Daisy Zhang");
            MailAddress addressTo = new MailAddress("susanwong32@outlook.com");

            MailMessage mail = new MailMessage(addressFrom, addressTo);

            mail.Subject = "This is a test message";
            string htmlString = @"
           <p>Dear Ms. Susan,</p>
           <p>This is an example of creating an <b>outlook message</b> <u>(msg)</u>.</p>
           <ul>
           <li> Create a message with RTF file </li>
           <li> Create a message with attachment</li>
           </ul>
           <p style='color:red'>This text is in red </p>
           <p>Best regards, </p>
           <p>Daisy </p>";

            mail.BodyHtml = htmlString;

            mail.Attachments.Add(new Attachment("logo.png"));

            mail.Save("Sample.msg", MailMessageFormat.Msg);
        }
    }
}

A file with the EMLX or EML file extension is a Mail Message file used to store an email message. EML/EMLX file can converted to MHTML or MSG file format with few lines of core code by using Spire.Email.

Convert EML/EMLX to MHTML

[C#]
using Spire.Email;
using System;

namespace ConvertEMLandEMLXtoMHTML 
{
    class Program
    {
        static void Main(string[] args)
        {
            MailMessage message = MailMessage.Load("example.eml");
            message.Save("ToMhtml.mhtml", MailMessageFormat.Mhtml);
            Console.WriteLine("Done");
        }
    }
}
[VB.NET]
Imports Spire.Email

Namespace ConvertEMLandEMLXtoMHTML
	Class Program
		Private Shared Sub Main(args As String())
			Dim message As MailMessage = MailMessage.Load("example.eml")
			message.Save("ToMhtml.mhtml", MailMessageFormat.Mhtml)
			Console.WriteLine("Done")
		End Sub
	End Class
End Namespace

Convert EML/EMLX to MSG

[C#]
using Spire.Email;
using System;

namespace ConvertEMLandEMLXtoMSG 
{
    class Program
    {
        static void Main(string[] args)
        {
            MailMessage message = MailMessage.Load("example.eml");
            message.Save("ToMsg.msg", MailMessageFormat.Msg);
            Console.WriteLine("Done");
        }
    }
}
[VB.NET]
Imports Spire.Email

Namespace ConvertEMLandEMLXtoMSG
	Class Program
		Private Shared Sub Main(args As String())
			Dim message As MailMessage = MailMessage.Load("example.eml")
			message.Save("ToMsg.msg", MailMessageFormat.Msg)
			Console.WriteLine("Done")
		End Sub
	End Class
End Namespace

When we operate the email messages, we may need to send the message to many more email address. Spire.Email supports to send a message to many email addresses at one time. This article demonstrates how to add the new send To and Cc email address from an existing email message via Spire.Email in C# and VB.NET.

Firstly, please view the sample email message with one to and cc email address:

Update the send to email address for Email message

How to add new send to and cc email addresses:

[C#]
using Spire.Email;

namespace Update 
{
    class Program
    {
        static void Main(string[] args)
        {
            //Load the mail message from file
            MailMessage mail = MailMessage.Load("Sample.msg");

            //add a new To email address and its display name
            mail.To.Add(new MailAddress("support@e-iceblue.com", "E-iceblue Support"));

            // add a new Cc email address and its display name
            mail.Cc.Add(new MailAddress("comments@e-iceblue.com", "Comments"));


            // Save the message
            mail.Save("ChangeEmailAddress.msg", MailMessageFormat.Msg);   
        }
    }
}
[VB.NET]
Imports Spire.Email

Namespace Update
	Class Program
		Private Shared Sub Main(args As String())
			'Load the mail message from file
			Dim mail As MailMessage = MailMessage.Load("Sample.msg")

			'add a new To email address and its display name
			mail.[To].Add(New MailAddress("support@e-iceblue.com", "E-iceblue Support"))

			' add a new Cc email address and its display name
			mail.Cc.Add(New MailAddress("comments@e-iceblue.com", "Comments"))


			' Save the message
			mail.Save("ChangeEmailAddress.msg", MailMessageFormat.Msg)
		End Sub
	End Class
End Namespace

Effective screenshot after changing the email address:

Update the send to email address for Email message

Spire.Email allows developers to search mailbox for email messages that match the given search criteria. This article illustrates how to search email messages using Spire.Email component.

Detail steps:

Step 1: Create an ImapClient instance.

ImapClient imap = new ImapClient();

Step 2: Set host, port, authentication and connection protocol.

imap.Host = "outlook.office365.com";
imap.Port = 143;
imap.Username = "LeonDavisLD@outlook.com";
imap.Password = "password";
imap.ConnectionProtocols = ConnectionProtocols.Ssl;

Step 3: connect the imap server.

imap.Connect();

Step 4: Select Inbox folder.

imap.Select("Inbox");

Step 5: Search email messages in the folder that match the search criteria.

//Search email messages sent from “Alice”
ImapMessageCollection messages = imap.Search("'From' Contains 'Alice'");
Console.WriteLine("Number of messages sent from Alice: " + messages.Count);

//Search email messages with “Spire” string in subject
messages = imap.Search("'Subject' Contains 'Spire'");
Console.WriteLine("Number of messages with 'Spire' in subject: " + messages.Count);

Screenshot:

Search Email Messages in C#, VB.NET

Full code:

[C#]
using Spire.Email;
using Spire.Email.IMap;
using System;

namespace SearchEmailMessages 
{
    class Program
    {
        static void Main(string[] args)
        {
            //Create an ImapClient instance
            ImapClient imap = new ImapClient();

            //Set host, port, authentication and connection protocol
            imap.Host = "outlook.office365.com";
            imap.Port = 143;
            imap.Username = "LeonDavisLD@outlook.com";
            imap.Password = "password";
            imap.ConnectionProtocols = ConnectionProtocols.Ssl;

            //Connect the imap server
            imap.Connect();

            //Select Inbox folder
            imap.Select("Inbox");

            //Search email messages sent from "Alice"
            ImapMessageCollection messages = imap.Search("'From' Contains 'Alice'");
            Console.WriteLine("Number of messages sent from Alice: " + messages.Count);

            //Search email messages with “Spire” string in subject
            messages = imap.Search("'Subject' Contains 'Spire'");
            Console.WriteLine("Number of messages with 'Spire' in subject: " + messages.Count);    
        }
    }
}
[VB.NET]
Imports Spire.Email
Imports Spire.Email.IMap

Namespace SearchEmailMessages
	Class Program
		Private Shared Sub Main(args As String())
			'Create an ImapClient instance
			Dim imap As New ImapClient()

			'Set host, port, authentication and connection protocol
			imap.Host = "outlook.office365.com"
			imap.Port = 143
			imap.Username = "LeonDavisLD@outlook.com"
			imap.Password = "password"
			imap.ConnectionProtocols = ConnectionProtocols.Ssl

			'Connect the imap server
			imap.Connect()

			'Select Inbox folder
			imap.[Select]("Inbox")

			'Search email messages sent from "Alice"
			Dim messages As ImapMessageCollection = imap.Search("'From' Contains 'Alice'")
			Console.WriteLine("Number of messages sent from Alice: " + messages.Count)

			'Search email messages with “Spire” string in subject
			messages = imap.Search("'Subject' Contains 'Spire'")
			Console.WriteLine("Number of messages with 'Spire' in subject: " + messages.Count)
		End Sub
	End Class
End Namespace

This article demonstrates how to delete a specific email message along with all email messages using Spire.Email component.

Detail steps:

Step 1: Create a POP3 client.

Pop3Client pop3 = new Pop3Client();

Step 2: Set host, authentication, port and connection protocol.

pop3.Host = "outlook.office365.com";
pop3.Username = "LeonDavisLD@outlook.com";
pop3.Password = "password";
pop3.Port = 995;
pop3.EnableSsl = true;

Step 3: Connect the pop server.

pop3.Connect();

Step 4: Get the number of messages before deleting message(s).

//Get the number of messages before deleting message(s)
Pop3MessageInfoCollection messages = pop3.GetAllMessages();
Console.WriteLine("Number of messages before deleting: " + messages.Count);

Step 5: Delete message(s).

//Delete an email message by its sequence number
pop3.DeleteMessage(2);

//Delete all messages
//pop3.DeleteAllMessages();

Step 6: Get the number of messages after deleting message(s).

//Get the number of messages after deleting message(s)
messages = pop3.GetAllMessages();
Console.WriteLine("Number of messages after deleting: " + messages.Count);

Delete Email messages in C#, VB.NET

Full code:

[C#]
using Spire.Email;
using Spire.Email.Pop3;
using System;

namespace DeleteEmailMessages 
{
    class Program
    {
        static void Main(string[] args)
        {
            //Create a POP3 client
            Pop3Client pop3 = new Pop3Client();

            //Set host, authentication, port and connection protocol
            pop3.Host = "outlook.office365.com";
            pop3.Username = "LeonDavisLD@outlook.com";
            pop3.Password = "password";
            pop3.Port = 995;
            pop3.EnableSsl = true;

            //Connect the pop server
            pop3.Connect();

            //Get the number of messages before deleting message(s)
            Pop3MessageInfoCollection messages = pop3.GetAllMessages();
            Console.WriteLine("Number of messages before deleting: " + messages.Count);

            //Delete an email message by its sequence number
            pop3.DeleteMessage(2);

            //Delete all messages
            //pop3.DeleteAllMessages();

            //Get the number of messages after deleting message(s)
            messages = pop3.GetAllMessages();
            Console.WriteLine("Number of messages after deleting: " + messages.Count);       
        }
    }
}
[VB.NET]
Imports Spire.Email
Imports Spire.Email.Pop3

Namespace DeleteEmailMessages
	Class Program
		Private Shared Sub Main(args As String())
			'Create a POP3 client
			Dim pop3 As New Pop3Client()

			'Set host, authentication, port and connection protocol
			pop3.Host = "outlook.office365.com"
			pop3.Username = "LeonDavisLD@outlook.com"
			pop3.Password = "password"
			pop3.Port = 995
			pop3.EnableSsl = True

			'Connect the pop server
			pop3.Connect()

			'Get the number of messages before deleting message(s)
			Dim messages As Pop3MessageInfoCollection = pop3.GetAllMessages()
			Console.WriteLine("Number of messages before deleting: " + messages.Count)

			'Delete an email message by its sequence number
			pop3.DeleteMessage(2)

			'Delete all messages
			'pop3.DeleteAllMessages();

			'Get the number of messages after deleting message(s)
			messages = pop3.GetAllMessages()
			Console.WriteLine("Number of messages after deleting: " + messages.Count)
		End Sub
	End Class
End Namespace

This article illustrates how to get message contents such as from address, send to address, subject, date and the body of the message by using Spire.Email.

Code snippets of how to extract the message contents:

Step 1: Load the mail message.

MailMessage mail = MailMessage.Load("Sample.msg");

Step 2: Create a new instance of StringBuilder.

StringBuilder sb = new StringBuilder();

Step 3: Get the message contents as we want.

//get the From address
sb.AppendLine("From:");
sb.AppendLine(mail.From.Address);

//get the To address
sb.AppendLine("To:");
foreach (MailAddress toAddress in mail.To)
{
    sb.AppendLine(toAddress.Address);
}

//get the date
sb.AppendLine("Date:");
sb.AppendLine(mail.Date.ToString());

//get the subject
sb.AppendLine("Subject:");
sb.AppendLine(mail.Subject);

//get the BodyText
sb.AppendLine("Message contents");
sb.AppendLine(mail.BodyText);

//get the BodyHtml
sb.AppendLine("BodyHtml");
sb.AppendLine(mail.BodyHtml);

Step 4: Write all contents in .txt

File.WriteAllText("ExtractMessageContents.txt", sb.ToString());

The extracted message contents in .txt file format.

Extract message contents in C#, VB.NET

Full codes:

[C#]
using Spire.Email;
using System.IO;
using System.Text;

namespace ExtractMessage 
{
    class Program
    {
        static void Main(string[] args)
        {

            MailMessage mail = MailMessage.Load("Sample.msg");

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("From:");
            sb.AppendLine(mail.From.Address);

            sb.AppendLine("To:");
            foreach (MailAddress toAddress in mail.To)
            {
                sb.AppendLine(toAddress.Address);
            }

            sb.AppendLine("Date:");
            sb.AppendLine(mail.Date.ToString());

            sb.AppendLine("Subject:");
            sb.AppendLine(mail.Subject);

            sb.AppendLine("Message contents");
            sb.AppendLine(mail.BodyText);

            sb.AppendLine("BodyHtml");
            sb.AppendLine(mail.BodyHtml);

            File.WriteAllText("ExtractMessageContents.txt", sb.ToString());
        }
    }
}
[VB.NET]
Dim mail As MailMessage = MailMessage.Load("Sample.msg")

Dim sb As New StringBuilder()

sb.AppendLine("From:")
sb.AppendLine(mail.From.Address)

sb.AppendLine("To:")
For Each toAddress As MailAddress In mail.[To]
	sb.AppendLine(toAddress.Address)
Next

sb.AppendLine("Date:")
sb.AppendLine(mail.[Date].ToString())

sb.AppendLine("Subject:")
sb.AppendLine(mail.Subject)

sb.AppendLine("Message contents")
sb.AppendLine(mail.BodyText)

sb.AppendLine("BodyHtml")
sb.AppendLine(mail.BodyHtml)

File.WriteAllText("ExtractMessageContents.txt", sb.ToString())

Send Bulk Emails in C#, VB.NET

2017-07-12 06:24:20 Written by support iceblue

Sending bulk emails means that you can send a batch of emails to multiple recipients and they will not be able to determine the others you've sent the message to.

The following code snippets demonstrate how to send bulk emails using Spire.Email in C# and VB.NET.

Step 1: Create instances of MailMessage class and specify sender and recipients.

MailMessage message1 = new MailMessage("sender@e-iceblue.com", "recipient1@e-iceblue.com");
MailMessage message2 = new MailMessage("sender@e-iceblue.com", " recipient2@e-iceblue.com");
MailMessage message3 = new MailMessage("sender@e-iceblue.com", " recipient3@e-iceblue.com");

Step 2: Set the subject and body text of the messages.

message1.Subject = message2.Subject = message3.Subject = "Subject";
message1.BodyText = message2.BodyText = message3.BodyText = "This is body text.";

Step 3: Initialize an object of MailMessageCollection class and add the instances of MailMessage class into the object.

List msgs = new List();
msgs.Add(message1);
msgs.Add(message2);
msgs.Add(message3);

Step 4: Create a SmtpClient instance with host, port, username and password, and send batch of emails using SendSome method.

SmtpClient client = new SmtpClient();
client.Host = "smtp.outlook.com";
client.Port = 587;
client.Username = "sender@e-iceblue.com";
client.Password = "password";
client.ConnectionProtocols = ConnectionProtocols.Ssl;
client.SendSome(msgs);
Console.WriteLine("Message sent");

Full Code:

[C#]
MailMessage message1 = new MailMessage("sender@e-iceblue.com", "recipient1@e-iceblue.com");
MailMessage message2 = new MailMessage("sender@e-iceblue.com", " recipient2@e-iceblue.com");
MailMessage message3 = new MailMessage("sender@e-iceblue.com", " recipient3@e-iceblue.com");
message1.Subject = message2.Subject = message3.Subject = "subject";
message1.BodyText = message2.BodyText = message3.BodyText = "This is body text.";

List msgs = new List();
msgs.Add(message1);
msgs.Add(message2);
msgs.Add(message3);

SmtpClient client = new SmtpClient();
client.Host = "smtp.outlook.com";
client.Port = 587;
client.Username = "sender@e-iceblue.com";
client.Password = "password";
client.ConnectionProtocols = ConnectionProtocols.Ssl;
client.SendSome(msgs);
Console.WriteLine("Message sent");
[VB.NET]
Dim message1 As New MailMessage("sender@e-iceblue.com", "recipient1@e-iceblue.com")
Dim message2 As New MailMessage("sender@e-iceblue.com", " recipient2@e-iceblue.com")
Dim message3 As New MailMessage("sender@e-iceblue.com", " recipient3@e-iceblue.com")
message1.Subject = InlineAssignHelper(message2.Subject, InlineAssignHelper(message3.Subject, "subject"))
message1.BodyText = InlineAssignHelper(message2.BodyText, InlineAssignHelper(message3.BodyText, "This is body text."))

Dim msgs As New List(Of MailMessage)()
msgs.Add(message1)
msgs.Add(message2)
msgs.Add(message3)

Dim client As New SmtpClient()
client.Host = "smtp.outlook.com"
client.Port = 587
client.Username = "sender@e-iceblue.com"
client.Password = "password"
client.ConnectionProtocols = ConnectionProtocols.Ssl
client.SendSome(msgs)
Console.WriteLine("Message sent")

This article illustrates how to get mailbox information such as the number of messages, the size of mailbox and the unique id of a specific message using Spire.Email component.

Detail steps:

Step 1: Create a pop3 client.

Pop3Client pop = new Pop3Client();

Step 2: Set host, authentication, port and connection protocol.

pop.Host = "outlook.office365.com";
pop.Username = "LeonDavisLD@outlook.com";
pop.Password = "password";
pop.Port = 995;
pop.EnableSsl = true;

Step 3: Connect the pop server.

pop.Connect();

Step 4: Get information of mailbox.

//Get the number of messages
Console.WriteLine("Mailbox message count: " + pop.GetMessageCount());
            
//Get the size of mailbox
Console.WriteLine("Mailbox size: " + pop.GetSize() + " bytes");

//Get the unique id of the first message
Console.WriteLine("Message uid: " + pop.GetMessagesUid(1));

Screenshot:

Get Mailbox Information in C#, VB.NET

Full code:

[C#]
using System;
using Spire.Email.Pop3;

namespace Get_mailbox_information
{
    class Program
    {
        static void Main(string[] args)
        {
            //Create a pop3 client
            using (Pop3Client pop = new Pop3Client())
            {
                //Set host, authentication, port and connection protocol
                pop.Host = "outlook.office365.com";
                pop.Username = "LeonDavisLD@outlook.com";
                pop.Password = "password";
                pop.Port = 995;
                pop.EnableSsl = true;

                //Connect the pop server
                pop.Connect();

                //Get the number of messages
                Console.WriteLine("Mailbox message count: " + pop.GetMessageCount());

                //Get the size of mailbox
                Console.WriteLine("Mailbox size: " + pop.GetSize() + " bytes");

                //Get the unique id of the first message
                Console.WriteLine("Message uid: " + pop.GetMessagesUid(1));
            }
        }
    }
}
[VB.NET]
Imports Spire.Email.Pop3

Namespace Get_mailbox_information
	Class Program
		Private Shared Sub Main(args As String())
			'Create a pop3 client
			Using pop As New Pop3Client()
				'Set host, authentication, port and connection protocol
				pop.Host = "outlook.office365.com"
				pop.Username = "LeonDavisLD@outlook.com"
				pop.Password = "password"
				pop.Port = 995
				pop.EnableSsl = True

				'Connect the pop server
				pop.Connect()

				'Get the number of messages
				Console.WriteLine("Mailbox message count: " + pop.GetMessageCount())

				'Get the size of mailbox
				Console.WriteLine("Mailbox size: " + pop.GetSize() + " bytes")

				'Get the unique id of the first message
				Console.WriteLine("Message uid: " + pop.GetMessagesUid(1))
			End Using
		End Sub
	End Class
End Namespace

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

page