This is a simple class written in VB.NET that allows you to download email from a POP3 mail server. It includes functions for extracting who the mail is for, who it is from, the subject, and the email body. As it stands, there is no support for handling attachments.
When I started to work with the .NET framework, one of the first things I noticed was its lack of support for downloading emails from a mail server. There is very good support for sending mail via the SMTP protocol, but nothing for receiving. The class came about when I needed a way of retrieving log files that were sent as emails and acting on the information contained in the mail.
Using the code
There are two main classes you can use. The first one is called
POP3, and is used to connect to the POP3 server and deal with all commands you have to issue in order to retrieve mail. The second class is called
EmailMessage, and is used to extract all the different sections out of messages.
You declare the variables and create the objects, like so:
Dim popConn As SamplePop3Class.POP3
Dim mailMess As SamplePop3Class.EmailMessage
'create the objects
popConn = New SamplePop3Class.POP3
mailMess = New SamplePop3Class.EmailMessage
Once you have created the objects, connect to the mail server and find out how many messages (if any) are on the server.
'if we have got to this point, try and connect to the server
popConn.POPConnect(strMailServeor, strUsername, strPassword)
'now we have a connection, see if there are any mails on the server
intMessCnt = popConn.GetMailStat()
Now, the variable
intMessCnt will contain how many messages are on the server. If it is greater then 0, loop through each of the messages and extract the sections of the email.
'if we returned some messages, loop through each one and get the details
For i = 1 To intMessCnt
'load the entire content of the mail into a string
strMailContent = popConn.GetMailMessage(i)
'call the functions to get the various parts out of the email
strFrom = mailMess.ParseEmail(strMailContent, "From:")
strSubject = mailMess.ParseEmail(strMailContent, "Subject:")
strToo = mailMess.ParseEmail(strMailContent, "To:")
strBody = mailMess.ParseBody()
Now, you should have all the sections of the email held in your variables. From here, you could save the email to an external file, insert the details into a database, or do whatever you want with the information.
Points of interest
This was the first time I have ever tried to write an application that involved communicating over TCP/IP. I was very surprised how easy and powerful it is, the hardest part was making sure I handled any errors coming back from the POP3 server correctly, but as everything coming back into an
IOStream, it was very easy to read.
The only problem with this code as it stands is its lack of support for attachments. I have looked into it and it does seam very complex, but I am going to have a go at it and will update this code once I have it working.
Please note this is my first posting, so if anyone has any pointers on how to improve my article, let me know!