Accediendo a Gmail en SSL

SMTP

Este artículo muestra cómo conectarse a un servidor de Gmail y enviar un correo electrónico utilizando el protocolo SMTP sobre SSL.

Conectándose al servidor SMTP de Gmail

El siguiente fragmento de código muestra cómo conectarse a un servidor SMTP habilitado para SSL.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
SmtpClient client = new SmtpClient("smtp.gmail.com");
// Set username, Password, Port No, and SecurityOptions
client.Username = "your.email@gmail.com";
client.Password = "your.password";
client.Port = 587;

Enviando un Mensaje de Correo Electrónico

El código anterior configura el objeto SMTPClient para conectarse al servidor de Gmail. Para enviar un mensaje utilizando el mismo objeto cliente, crea un objeto de clase MailMessage y envía el mensaje utilizando el objeto cliente SMTP. El siguiente fragmento de código muestra cómo establecer las propiedades del mensaje, por ejemplo, el asunto, a y cuerpo:

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
MailMessage msg = new MailMessage();
// Set From, To whom
msg.From = new MailAddress("user@gmail.com");
msg.To.Add(new MailAddress("user@gmail.com"));
// Set the subject, priority, Set the message bodies (plain text and HTML), and Add the attachment
msg.Subject = "subject";
msg.Priority = MailPriority.High;
msg.Body = "Please open with html browser";
msg.HtmlBody = "<bold>this is the mail body</bold>";
Attachment attachment = new Attachment(dataDir + "File.txt");
msg.Attachments.Add(attachment);
client.Send(msg);

IMAP

Este artículo muestra cómo realizar una serie de actividades en un servidor de correo habilitado para SSL utilizando el protocolo IMAP:

  • Conectarse a un servidor de correo.
  • Obtener el número total de mensajes en una bandeja de entrada.
  • Guardar mensajes localmente.
  • Crear un mensaje y agregarlo a una carpeta.

Conectándose al Servidor de Correo

Utiliza el objeto de clase ImapClient de Aspos.Email para conectarte al servidor de correo. Se requiere la dirección del servidor, puerto, nombre de usuario y contraseña para establecer una conexión. Gmail utiliza el puerto 993 para el protocolo IMAP, el siguiente fragmento de código muestra cómo conectarse a Gmail utilizando ese puerto.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Connect to the Gmail server
ImapClient imap = new ImapClient("imap.gmail.com", 993, "user@gmail.com", "pwd");

Seleccionando una Carpeta y Obteniendo el Número Total de Mensajes

Comprobar la carpeta de la Bandeja de Entrada es la tarea más frecuente al revisar el correo electrónico. Usando Aspose.Email, esto se puede hacer con solo dos líneas de código simples. El siguiente fragmento de código muestra cómo acceder a la carpeta de la bandeja de entrada y obtener el número total de mensajes en la carpeta.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
imap.SelectFolder(ImapFolderInfo.InBox);
Console.WriteLine(imap.CurrentFolder.TotalMessageCount + " messages found.");

Guardando Mensajes en un Disco Duro Local

Una vez que se ha seleccionado una carpeta con el método SelectFolder, utiliza la función ListMessages para obtener una lista de todos los mensajes en la carpeta en un objeto ImapMessagesInfoCollection. Recorre esta colección y guarda los mensajes de correo electrónico en el disco local de la computadora de la siguiente manera:

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Gets the message info collection and Download each message
ImapMessageInfoCollection list = imap.ListMessages();
for (int i = 0; i < list.Count; i++)
{
// Save the message as an EML file
imap.SaveMessage(list[i].UniqueId, list[i].UniqueId + "_out.eml");
}

Creando una Nueva Carpeta

El protocolo IMAP también te permite crear una nueva carpeta en el servidor de correo electrónico. Esto se puede hacer utilizando una simple llamada a la función.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
imap.CreateFolder("NewFolder");

Creando un Nuevo Mensaje en una Carpeta

Agrega un nuevo mensaje a la carpeta utilizando las clases MailMessage e ImapClient. Los ejemplos a continuación crean primero un objeto MailMessage proporcionando los valores de asunto, a y de. Luego se suscribe a una carpeta y agrega el mensaje a ella. El siguiente fragmento de código muestra cómo crear un nuevo mensaje en una carpeta.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Create a message and Subscribe to the Inbox folder ans Append the newly created message
MailMessage message = new MailMessage("user@domain1.com", "user@domain2.com", "subject", "message");
imap.SelectFolder(ImapFolderInfo.InBox);
imap.SubscribeFolder(imap.CurrentFolder.Name);
imap.AppendMessage(imap.CurrentFolder.Name, message);

POP3

Este artículo muestra algunos ejemplos que utilizan el protocolo POP3 sobre SSL. Para conectarse a un servidor protegido por SSL, necesitamos definir el puerto SSL y dos propiedades adicionales. El resto del código es el mismo que para conectarse a un servidor POP3 normal.

Los ejemplos de código a continuación muestran cómo:

  • Conectarse a un servidor SSL.
  • Comprobar el estado del buzón
  • Obtener información sobre el mensaje
  • Recuperar correos electrónicos.

Conectándose al Servidor de Correo

Conéctate al servidor de correo habilitado para SSL utilizando la clase Pop3client como se describe a continuación.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Create a POP3 client
Pop3Client client = new Pop3Client();
// Basic settings (required)
client.Host = "pop.gmail.com";
client.Username = "user@gmail.com";
client.Password = "pwd";
client.Port = 995;
client.SecurityOptions = SecurityOptions.SSLImplicit;

Comprobando el Estado del Buzón

El siguiente fragmento de código muestra cómo comprobar el número de mensajes almacenados en el buzón y el tamaño del buzón. Utiliza la clase Pop3MailboxInfo para este propósito.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Create an object of type Pop3MailboxInfo and Get the mailbox information, Check number of messages, and Check mailbox size
Pop3MailboxInfo info;
info = client.GetMailboxInfo();
Console.WriteLine(info.MessageCount);
Console.Write(info.OccupiedSize + " bytes");

Comprobando la Información del Mensaje

Este ejemplo verifica todos los mensajes en el buzón utilizando la clase Pop3MessageInfoCollection. Utiliza la función Pop3Client.ListMessages() para obtener la colección Pop3MessageInfoCollection. Luego recorre la colección para leer la información del mensaje: ID del mensaje, índice, asunto y tamaño.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Get the list of messages in the mailbox and Iterate through the messages
Pop3MessageInfoCollection infos = client.ListMessages();
foreach (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);
}

Recuperando Mensajes

Para obtener los mensajes del buzón, utiliza el método FetchMessage() de la clase Pop3Client para obtener el mensaje en un objeto de tipo MailMessage. El siguiente fragmento de código muestra cómo contar el número de correos electrónicos en el buzón y luego recorrerlos para recuperar cada uno.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Get the 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 an object of type MailMessage and Retrieve the message in MailMessage format directly
Aspose.Email.MailMessage msg;
msg = client.FetchMessage(i);
Console.WriteLine("From:" + msg.From.ToString());
Console.WriteLine("Subject:" + msg.Subject);
Console.WriteLine(msg.HtmlBody);
msg.Save(i + "Getmessage_out.eml");
}