In this article, we will show you how to access Gmail via SSL. We can access gmail using following protocols:
- SMTP
- IMAP
- **POP3 **
SMTP
In this section we will show you how to perform various tasks on Gmail server using SMTP protocol on SSL.
Connect to Gmail SMTP server
The following example shows you how you can connect to SSL enabled SMTP server. We will set the following properties for SSL support:
First, create a new SmtpClient object as follows:
[C#]
Aspose.Network.Mail.SmtpClient client = new SmtpClient(“smtp.gmail.com”);
[VB.Net]
Dim client As Aspose.Network.Mail.SmtpClient = New SmtpClient(“smtp.gmail.com”)
We have passed smtp.gmail.com in the constructor which is the smtp server address of Gmail. Now, set the following properties which are necessary to connect to any SSL enabled mail server.
[C#]
// set your Gmail username
client.Username = “user@gmail.com”;
// set you Gmail password
client.Password = “pwd”;
// set the port to 587. This is the SSL port of Gmail SMTP server
client.Port = 587;
// set the security mode to explicit
client.SecurityMode = SmtpSslSecurityMode.Explicit;
// enable SSL
client.EnableSsl = true;
[VB.Net]
set your Gmail username
client.Username = “user@gmail.com”
’ set you Gmail password
client.Password = “pwd”
’ set the port to 587. This is the SSL port of Gmail SMTP server
client.Port = 587
’ set the security mode to explicit
client.SecurityMode = SmtpSslSecurityMode.Explicit
’ enable SSL
client.EnableSsl = True
Send an email message
So far, we have setup the SMTP client object to connect to the Gmail server. To send a message using the above client object, we need to create a MailMessage object and send the message using SmtpClient object.
[C#]
Aspose.Network.Mail.MailMessage msg = new MailMessage();
[VB.Net]
Dim msg As Aspose.Network.Mail.MailMessage = New MailMessage()
Set the properties of the message e.g. subject, to, body as follows:
[C#]
// from whom
msg.From = new Aspose.Network.Mail.MailAddress(“user@gmail.com”);
// to whom
msg.To.Add( new Aspose.Network.Mail.MailAddress( “user@gmail.com” ) );
// set the subject
msg.Subject = “subject”;
// set the priority
msg.Priority = Aspose.Network.Mail.MailPriority.High;
// set the message bodies
msg.TextBody = “Please open with html browser”;
msg.HtmlBody = “this is the mail body”;
// add the attachment
Aspose.Network.Mail.Attachment attachment = new Attachment(@“c:\File.txt”);
msg.Attachments.Add(attachment);
try
{
// send the message
client.Send(msg);
}
// catch exception
catch( SmtpException ex )
{
System.Diagnostics.Trace.WriteLine( ex.ToString() );
}
[VB.Net]
’ from whom
msg.From = New Aspose.Network.Mail.MailAddress(“user@gmail.com”)
’ to whom
msg.To.Add(New Aspose.Network.Mail.MailAddress(“user@gmail.com”))
’ set the subject
msg.Subject = “subject”
’ set the priority
msg.Priority = Aspose.Network.Mail.MailPriority.High
’ set the message bodies
msg.TextBody = “Please open with html browser”
msg.HtmlBody = “this is the mail body”
’ add the attachment
Dim attachment As Aspose.Network.Mail.Attachment = New Attachment(“c:\File.txt”)
msg.Attachments.Add(attachment)
Try
' send the message
client.Send(msg)
Catch ex As SmtpException
' catch exception
System.Diagnostics.Trace.WriteLine(ex.ToString())
End Try
IMAP
In this section we will perform some activities on SSL enabled mail server using IMAP protocol.
Connect to the Mail Server
We will use ImapClient object of Aspose.Network to connect to the mail server. Server’s address, port, username and password are required for the connection to be established. Gmail uses port 993 for IMAP protocol, so in our example below we will connect to gmail using the same port.
Example:
[C#]
// connect to gmail server
Aspose.Network.Imap.ImapClient imap = new Aspose.Network.Imap.ImapClient(“imap.gmail.com”, 993, “user@gmail.com”, “pwd”);
imap.EnableSsl = true; // enable the SSL
imap.SecurityMode = Aspose.Network.Imap.ImapSslSecurityMode.Implicit; // set security mode
imap.Connect(true); // connect and login
[VB.Net]
’ connect to gmail server
Dim imap As New Aspose.Network.Imap.ImapClient(“imap.gmail.com”, 993, “user@gmail.com”, “pwd”)
imap.EnableSsl = True
’ enable the SSL
imap.SecurityMode = Aspose.Network.Imap.ImapSslSecurityMode.Implicit
’ set security mode
imap.Connect(True)
’ connect and login
Select Inbox folder and get total number of messages
Checking Inbox is the most frequent task when you check your email. Using Aspose, this can be done using just 2 simple lines of code.
Example:
[C#]
// select the Inbox folder
imap.SelectFolder(ImapFolderInfo.InBox);
//gets number of messages in the folder
Console.WriteLine(imap.CurrentFolder.TotalMessageCount + " messages found.");
[VB.Net]
’ select the Inbox folder
imap.SelectFolder(ImapFolderInfo.InBox)
‘gets number of messages in the folder
Console.WriteLine(imap.CurrentFolder.TotalMessageCount + " messages found.")
Saving messages to your local hard drive
Once we select some folder using SelectFolder method, we can use ListMessages function to get the list of all the messages in that folder in an ImapMessagesInfoCollection object. We can iterate through this collection and save email messages to the local drive of computer as follows:
Example:
[C#]
//gets the message info collection
ImapMessageInfoCollection list = imap.ListMessages();
//download each message
for (int i = 0; i < list.Count; i++)
{
// save the message as eml file
imap.SaveMessage(list[i].UniqueId, list[i].UniqueId + “.eml”);
}
[VB.Net]
‘gets the message info collection
Dim list As ImapMessageInfoCollection = imap.ListMessages()
‘download each message
For i As Integer = 0 To list.Count - 1
' save the message as eml file
imap.SaveMessage(list(i).UniqueId, list(i).UniqueId + ".eml")
Next
Create a new folder
IMAP protocol also allows you to create a new folder on the email server for categorization of emails and store them in the appropriate folders. This can be done using a simple function call.
Example:
[C#]
imap.CreateFolder(“NewFolder”);
[VB.Net]
imap.CreateFolder(“NewFolder”)
Create a New message in a folder
You can add a new message to the folder using the MailMessage and ImapClient class. We will create a MailMessage object first by providing subject, to and from. And then subscribe to a folder and add the message to it.
Example:
[C#]
// create a message
Aspose.Network.Mail.MailMessage msg;
msg = new Aspose.Network.Mail.MailMessage(
“subject”,
“message”
);
// subscribe to the currently selected folder which was Inbox in previous example
imap.SubscribeFolder(imap.CurrentFolder.Name);
// append the newly created message
imap.AppendMessage(imap.CurrentFolder.Name, msg);
[VB.Net]
’ create a message
Dim msg As Aspose.Network.Mail.MailMessage
msg = New Aspose.Network.Mail.MailMessage(“user@gmail.com”, “user@gmail.com”, “subject”, “message”)
’ subscribe to the currently selected folder which was Inbox in previous example
imap.SubscribeFolder(imap.CurrentFolder.Name)
’ append the newly created message
imap.AppendMessage(imap.CurrentFolder.Name, msg)
Pop3
In this section, we will show some examples that use Pop3 protocol on SSL. For SSL, we need to define the SSL port and 2 extra properties. Rest is same as connecting to normal Pop3 servers. We will start with making a connection to the mail server.
Connecting to Mail server
We will connect to the SSL enabled mail server using the same Pop3Client class as follows:
Example:
[C#]
// create a pop3 client
Aspose.Network.Pop3.Pop3Client client;
client = new Aspose.Network.Pop3.Pop3Client();
// basic setings (required)
client.Host = “pop.gmail.com”;
client.Username = “user@gmail.com”;
client.Password = “pwd”;
client.Port = 995; // set SSL port
// Settings required for SSL enabled Pop3 servers
client.SecurityMode = Aspose.Network.Pop3.Pop3SslSecurityMode.Implicit; // set implicit security mode
client.EnableSsl = true; // enable SSL
client.Connect(); // establish a connection
client.Login(); // login
[VB.Net]
’ create a pop3 client
Dim client As Aspose.Network.Pop3.Pop3Client
client = New Aspose.Network.Pop3.Pop3Client()
’ basic setings (required)
client.Host = “pop.gmail.com”
client.Username = “user@gmail.com”
client.Password = “pwd”
client.Port = 995 ’ set SSL port
’ Settings required for SSL enabled Pop3 servers
client.SecurityMode = Aspose.Network.Pop3.Pop3SslSecurityMode.Implicit ’ set implicit security mode
client.EnableSsl = True ’ enable SSL
client.Connect() ’ establish a connection
client.Login() ’ login
Check the mailbox status
In this example, we will check the number of messages that are stored in the mailbox and the size of the mailbox. We will use Pop3MailboxInfo class for this purpose.
Example:
[C#]
// create the object of type Pop3MailboxInfo
Aspose.Network.Pop3.Pop3MailboxInfo info;
// get the mailbox information
info = client.GetMailboxInfo();
// check number of messages
Console.WriteLine(info.MessageCount);
// check mailbox size
Console.Write(info.OccupiedSize + " bytes");
[VB.Net]
’ create the object of type Pop3MailboxInfo
Dim info As Aspose.Network.Pop3.Pop3MailboxInfo
’ get the mailbox information
info = client.GetMailboxInfo()
’ check number of messages
Console.WriteLine(info.MessageCount)
’ check mailbox size
Console.Write(info.OccupiedSize + " bytes")
Check messages information in the mailbox
In this example, we will check all the messages in the mailbox using Pop3MessageInfoCollection class. We will use Pop3Client.ListMessages() function to get the Pop3MessageInfoCollection. Then we will iterate through the collection to read the message information.
Example:
[C#]
// get the list of messages in the mailbox
Aspose.Network.Pop3.Pop3MessageInfoCollection infos = client.ListMessages();
// iterate through the messages
foreach(Aspose.Network.Pop3.Pop3MessageInfo info in infos)
{
Console.Write(“Id:” + info.UniqueId);
Console.Write(“Index number:” + info.SequenceNumber);
Console.Write(“Subject:” + info.Subject);
Console.Write(“size:” + info.Size);
}
[VB.Net]
’ get the list of messages in the mailbox
Dim infos As Aspose.Network.Pop3.Pop3MessageInfoCollection = client.ListMessages()
’ iterate through the messages
For Each info As Aspose.Network.Pop3.Pop3MessageInfo In infos
Console.Write("Id:" + info.UniqueId)
Console.Write("Index number:" + info.SequenceNumber)
Console.Write("Subject:" + info.Subject)
Console.Write("size:" + info.Size)
Next
Retrieve messages from the mailbox
To get the messages from the mailbox we will use the FetchMessage() method of Pop3Client to get the message in a MailMessage type object.
Example:
[C#]
// get number of messages in the mailbox
int messageCount = client.GetMessageCount();
// iterate through the messages and retrieve one by one
for(int i=1; i<= messageCount; i++)
{
// create object of type MailMessage
Aspose.Network.Mail.MailMessage msg;
// retrieve the message in MimeMessage format directly
msg = client.FetchMessage(i);
Console.WriteLine("From:" + msg.From.ToString());
Console.WriteLine("Subject:" + msg.Subject);
Console.WriteLine(msg.HtmlBody);
// save in local drive
msg.Save(i + “.eml”);
}
[VB.Net]
’ get number of messages in the mailbox
Dim messageCount As Integer = client.GetMessageCount()
For i As Integer = 1 To messageCount
' iterate through the messages and retrieve one by one
' create object of type MailMessage
Dim msg As Aspose.Network.Mail.MailMessage
' retrieve the message in MimeMessage format directly
msg = client.FetchMessage(i)
Console.WriteLine("From:" + msg.From.ToString())
Console.WriteLine("Subject:" + msg.Subject)
Console.WriteLine(msg.HtmlBody)
' save in local drive
msg.Save(i + ".eml")
Next