Envío y reenvío de mensajes - Enviar mensajes de correo Outlook usando programa Java

El SmtpClient la clase permite a las aplicaciones enviar correo electrónico utilizando el Protocolo Simple de Transferencia de Correo (SMTP).

  • El SmtpClient la clase es la única entrada principal que los desarrolladores usan para enviar mensajes de correo.
  • El SmtpClient la clase también proporciona otros métodos comunes de entrega de correo, incluyendo la escritura de mensajes de correo electrónico en el sistema de archivos, colas de mensajes, etc.
  • El SmtpClient la clase soporta plenamente estos dos modelos de programación:
  • El SmtpClient la clase también admite envío de mensajes como TNEF

Para enviar el mensaje de correo electrónico y bloquear mientras se espera a que el correo se transmita al servidor SMTP, utilice uno de los métodos Send síncronos. Para que el hilo principal de su programa continúe ejecutándose mientras se transmite el correo, use el beginSend método.

Envío de correos electrónicos de forma síncrona

Un mensaje de correo electrónico puede enviarse de forma síncrona usando el SmtpClient clase send método. Envía el mensaje de correo electrónico especificado a través de un servidor SMTP para su entrega. El remitente del mensaje, los destinatarios, el asunto y el cuerpo del mensaje se especifican mediante objetos String. Para enviar un mensaje de correo electrónico de forma síncrona, siga los pasos que se indican a continuación:

  1. Cree una instancia de MailMessage clase y establecer sus propiedades.
  2. Cree una instancia de SmtpClient clase y especificar el Host, puerto, nombre de usuario y Contraseña.
  3. Enviar el mensaje usando el SmtpClient clase send método y pasar el MailMessage instancia.

El siguiente fragmento de código Java le muestra cómo enviar correos electrónicos de Outlook de forma síncrona.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

// Declare msg as MailMessage instance
MailMessage msg = new MailMessage();

// Create an instance of SmtpClient class
SmtpClient client = new SmtpClient();

// Specify your mailing host server, Username, Password, Port # and Security option
client.setHost("mail.server.com");
client.setUsername("username");
client.setPassword("password");
client.setPort(587);
client.setSecurityOptions(SecurityOptions.SSLExplicit);

try {
    // Client.Send will send this message
    client.send(msg);
    System.out.println("Message sent");
} catch (Exception ex) {
    System.err.println(ex);
}

Envío de correos electrónicos de forma asíncrona

A veces, es posible que desee enviar correo de forma asíncrona. Por ejemplo, si está enviando una gran cantidad de correo a través de su aplicación, el enfoque síncrono podría no funcionar. En tal escenario, puede usar beginSend. El beginSend método del SmtpClient la clase envía un mensaje de correo electrónico a un servidor SMTP para su entrega. Este método no bloquea el hilo que llama y permite que el llamador pase un objeto al método que se invoca cuando la operación se completa. Para enviar un mensaje de correo electrónico de Outlook de forma asíncrona en Java, siga estos pasos:

  1. Cree una instancia de MailMessage clase y usar sus diferentes propiedades.
  2. Cree una instancia de SmtpClient clase y especificar el host, puerto, nombre de usuario y contraseña.
  3. Crear una instancia definida por el usuario que se pasará al método y se invocará cuando la operación asíncrona se complete.
  4. Enviar el mensaje usando beginSend método de SmtpClient clase y pasar el MailMessage instancia y una instancia definida por el usuario en ella junto con una función de devolución de llamada que se ejecutará cuando la operación se haya completado.

Para recibir una notificación cuando el correo electrónico haya sido enviado o la operación haya sido cancelada, la función de devolución de llamada pasada al beginSend se llama al método. Después de llamar al SmtpClient clase beginSend En el método no es necesario esperar a que un mensaje de correo electrónico se envíe completamente. Podemos llamar a otro método beginSend al mismo tiempo. Cuando un correo ha sido enviado usando el beginSend método, el fragmento de código imprime un mensaje ("Mensaje enviado"). El siguiente programa Java o fragmento de código le muestra cómo enviar correos de forma asíncrona.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

public static void run() {
    sendMail();
}

static SmtpClient getSmtpClient() {
    SmtpClient client = new SmtpClient();
    client.setHost("mail.server.com");
    // Specify your mail Username, Password, Port # and security option
    client.setUsername("username");
    client.setPassword("password");
    client.setPort(587);
    client.setSecurityOptions(SecurityOptions.SSLExplicit);
    return client;
}

static void sendMail() {
    try {

        // Declare msg as MailMessage instance
        MailMessage msg = new MailMessage("sender@gmail.com", "receiver@gmail.com", "Test subject", "Test body");
        SmtpClient client = getSmtpClient();
        Object state = new Object();
        IAsyncResult ar = client.beginSend(msg, callback, state);
        // If the user canceled the send, and mail hasn't been sent yet,
        client.cancelAsyncOperation(ar);

        msg.dispose();
        System.out.println("Goodbye.");
    } catch (Exception ex) {
        System.err.println(ex);
    }
}

static AsyncCallback callback = new AsyncCallback() {
    public void invoke(IAsyncResult ar) {
        IAsyncResultExt task = null;
        if (ar instanceof IAsyncResult)
            task = (IAsyncResultExt) ar;

        if (task != null && task.isCanceled()) {
            System.out.println("Send canceled.");
        }

        if (task != null && task.getErrorInfo() != null) {
            System.out.println(task.getErrorInfo());
        } else {
            System.out.println("Message Sent.");
        }
    }
};

Enviar mensajes almacenados desde disco

Los archivos EML, (archivos de correo electrónico de Outlook Express) contienen un encabezado de correo, cuerpo del mensaje y cualquier adjunto. Aspose.Email permite a los desarrolladores trabajar con archivos EML de diferentes formas. Este artículo muestra cómo cargar archivos EML desde disco y enviarlos como correos electrónicos con SMTP. Puede cargar archivos .eml desde disco o flujo en el MailMessage clase y envíe el mensaje de correo usando el SmtpClient clase. El MailMessage la clase es la clase principal para crear nuevos mensajes de correo, cargar archivos de mensaje de correo desde disco o flujo y guardar los mensajes. El siguiente fragmento de código Java muestra cómo enviar mensajes almacenados desde el disco.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

// Load an EML file in MailMessage class
MailMessage message = MailMessage.load(dataDir + "test.eml");

// Send this message using SmtpClient
SmtpClient client = new SmtpClient("host", "username", "password");

try {
    client.send(message);
} catch (Exception ex) {
    System.out.println(ex.getMessage());
}

Enviar correo electrónico de texto plano

Los ejemplos de programación a continuación muestran cómo enviar un mensaje de correo de texto plano. El Cuerpo propiedad, una propiedad de la MailMessage clase, se usa para especificar el contenido de texto plano del cuerpo del mensaje. Para enviar un mensaje de correo de texto plano, siga estos pasos:

  • Cree una instancia de la MailMessage clase.
  • Especifique las direcciones de correo del remitente y del receptor en la MailMessage instancia.
  • Especifique el Cuerpo contenido, usado para el mensaje de texto plano.
  • Cree una instancia de la SmtpClient clase y envíe el correo.

El siguiente fragmento de código le muestra cómo enviar un correo de texto plano.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

// Create an instance of the MailMessage class
MailMessage message = new MailMessage();

// Set From field, To field and Plain text body
message.setFrom(MailAddress.to_MailAddress("sender@sender.com"));
message.getTo().add("receiver@receiver.com");
message.setBody("This is Plain Text Body");

// Create an instance of the SmtpClient class
SmtpClient client = new SmtpClient();

// And Specify your mailing host server, Username, Password and Port
client.setHost("smtp.server.com");
client.setUsername("Username");
client.setPassword("Password");
client.setPort(25);

try {
    // Client.Send will send this message
    client.send(message);
    System.out.println("Message sent");
} catch (Exception ex) {
    System.err.println(ex);
}

Enviar correo con cuerpo HTML

Los ejemplos de programación a continuación muestran cómo puede enviar un mensaje de correo electrónico HTML simple. El HtmlBody, una propiedad de la MailMessage clase, se usa para especificar el contenido HTML del cuerpo del mensaje. Para enviar un correo HTML simple, siga estos pasos:

  • Cree una instancia de la MailMessage clase.
  • Especifique la dirección de correo del remitente y del receptor en la MailMessage instancia.
  • Especifique el HtmlBody contenido.
  • Cree una instancia de la SmtpClient clase y envíe el correo usando el send método.

Para propósitos de este artículo, el contenido HTML del correo es rudimentario: Este es el cuerpo HTML La mayoría de los correos HTML serán más complejos. El siguiente fragmento de programa Java le muestra cómo enviar un correo con cuerpo HTML.

public static void run() {
    // Declare msg as MailMessage instance
    MailMessage msg = new MailMessage();

    // Use MailMessage properties like specify sender, recipient, message and HtmlBody
    msg.setFrom(MailAddress.to_MailAddress("newcustomeronnet@gmail.com"));
    msg.setTo(MailAddressCollection.to_MailAddressCollection("asposetest123@gmail.com"));
    msg.setSubject("Test subject");
    msg.setHtmlBody("<html><body>This is the HTML body</body></html>");
    SmtpClient client = getSmtpClient();
    try {
        // Client will send this message
        client.send(msg);
        System.out.println("Message sent");
    } catch (Exception ex) {
        System.err.println(ex);
    }

    System.out.println("Email sent with HTML body.");
}

private static SmtpClient getSmtpClient() {
    SmtpClient client = new SmtpClient("smtp.gmail.com", 587, "your.email@gmail.com", "your.password");
    client.setSecurityOptions(SecurityOptions.Auto);
    return client;
}

Enviar correo con texto alternativo del mensaje

Los ejemplos de programación a continuación muestran cómo enviar un mensaje de correo electrónico HTML simple con contenido alternativo. Use el AlternateView clase para especificar copias de un mensaje de correo electrónico en diferentes formatos. Por ejemplo, si envía un mensaje en HTML, también podría proporcionar una versión de texto plano para los destinatarios que usan lectores de correo que no pueden mostrar contenido HTML. O, si está enviando un boletín, podría querer proporcionar una copia de texto plano para aquellos destinatarios que eligieron recibir una versión de texto plano. Para enviar un correo con texto alternativo, siga estos pasos:

  1. Cree una instancia de la MailMessage clase.
  2. Especifique las direcciones de correo del remitente y del receptor en la MailMessage instancia.
  3. Cree una instancia de la AlternateView clase.

Esto crea una vista alternativa a un mensaje de correo electrónico usando el contenido especificado en la cadena.

  1. Agregue la instancia de la AlternateView clase al MailMessage objeto.
  2. Cree una instancia de la SmtpClient clase y envíe el correo usando el send método.

El siguiente fragmento de código le muestra cómo enviar un correo electrónico con texto alternativo.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

// Declare message as MailMessage instance
MailMessage message = new MailMessage();

// Creates AlternateView to view an email message using the content specified in the //String
AlternateView alternate = AlternateView.createAlternateViewFromString("Alternate Text");

// Adding alternate text
message.getAlternateViews().addItem(alternate);

Enviar correos electrónicos en lote

Enviar correos electrónicos en lote significa enviar un conjunto de correos en un solo mensaje. Podemos enviar un lote de correos usando el SmtpClient clase send sobrecarga de método que acepta un MailMessageCollection clase:

  1. Cree una instancia de SmtpClient clase.
  2. Especifique el SmtpClient propiedades de la clase.
  3. Cree una instancia de la MailMessage clase.
  4. Especifique remitente, receptor, asunto del correo y mensaje en la instancia de la MailMessage clase.
  5. Repita los dos pasos anteriores nuevamente, si desea enviar correo a una persona diferente.
  6. Cree una instancia de MailMessageCollection clase.
  7. Agregue una instancia de MailMessage clase en el objeto de la MailMessageCollection clase.
  8. Ahora envíe su correo electrónico usando el SmtpClient clase send método pasando la instancia de MailMessageCollection clase en ella.

El siguiente fragmento de código le muestra cómo enviar correos electrónicos masivos.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

// Create SmtpClient as client and specify server, port, user name and password
SmtpClient client = new SmtpClient("mail.server.com", 25, "Username", "Password");

// Create instances of MailMessage class and Specify To, From, Subject and Message
MailMessage message1 = new MailMessage("msg1@from.com", "msg1@to.com", "Subject1", "message1, how are you?");
MailMessage message2 = new MailMessage("msg1@from.com", "msg2@to.com", "Subject2", "message2, how are you?");
MailMessage message3 = new MailMessage("msg1@from.com", "msg3@to.com", "Subject3", "message3, how are you?");

// Create an instance of MailMessageCollection class
MailMessageCollection manyMsg = new MailMessageCollection();
manyMsg.addItem(message1);
manyMsg.addItem(message2);
manyMsg.addItem(message3);

// Use client.BulkSend function to complete the bulk send task
try {
    // Send Message using BulkSend method
    client.send(manyMsg);
    System.out.println("Message sent");
} catch (Exception ex) {
    System.err.println(ex);
}

Obtener información sobre mensajes masivos enviados

Cuando envía mensajes en lote, puede obtener información sobre el número de mensajes enviados con éxito y la lista de esos mensajes. El SucceededSending evento se usa para este propósito.

El siguiente ejemplo de código muestra cómo obtener información sobre el número de mensajes enviados con éxito:

try (SmtpClient client = new SmtpClient(host, SecurityOptions.Auto)) {
    final AtomicInteger messageCount = new AtomicInteger(0);

    client.setSucceededSending(new EventHandler<MailMessageEventArgs>() {
        public void invoke(Object sender, MailMessageEventArgs eventArgs) {
            System.out.println("The message " + eventArgs.getMessage().getSubject() + " was successfully sent.");
            messageCount.incrementAndGet();
        }
    });

    client.send(messages);

    System.out.println(messageCount + " messages were successfully sent.");
}

Enviar correos con MultiConnection

SmtpClient proporciona un UseMultiConnection propiedad que puede usarse para crear múltiples conexiones para operaciones intensivas. También puede establecer el número de conexiones a usar durante el modo multiconexión mediante SmtpClient.ConnectionsQuantity. El siguiente fragmento de código muestra el uso del modo multiconexión para enviar varios mensajes.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

SmtpClient smtpClient = new SmtpClient();
smtpClient.setHost("<HOST>");
smtpClient.setUsername("<USERNAME>");
smtpClient.setPassword("<PASSWORD>");
smtpClient.setPort(587);
smtpClient.setSupportedEncryption(EncryptionProtocols.Tls);
smtpClient.setSecurityOptions(SecurityOptions.SSLExplicit);

List<MailMessage> messages = new ArrayList<MailMessage>();
for (int i = 0; i < 20; i++) {
    MailMessage message = new MailMessage("<EMAIL ADDRESS>", "<EMAIL ADDRESS>", "Test Message - " + UUID.randomUUID().toString(),
            "SMTP Send Messages with MultiConnection");
    messages.add(message);
}

smtpClient.setConnectionsQuantity(5);
smtpClient.setUseMultiConnection(MultiConnectionMode.Enable);
smtpClient.send(messages);

Enviando un mensaje como TNEF

Los correos electrónicos TNEF tienen un formato especial que puede perderse si se envían usando la API estándar. Aspose.Email brinda la capacidad de enviar correos como TNEF, preservando así el formato. El SmtpClient clase UseTnef la propiedad puede configurarse para enviar el correo como TNEF. El siguiente fragmento de código le muestra cómo enviar un mensaje como TNEF.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

String emlFileName = dataDir + "Message.eml"; // A TNEF Email

// Load from eml
MailMessage eml1 = MailMessage.load(emlFileName, new EmlLoadOptions());
eml1.setFrom(MailAddress.to_MailAddress("somename@gmail.com"));
eml1.getTo().clear();
eml1.getTo().addItem(new MailAddress("first.last@test.com"));
eml1.setSubject("With PreserveTnef flag during loading");
eml1.setDate(new Date());
SmtpClient client = new SmtpClient("smtp.gmail.com", 587, "somename", "password");
client.setSecurityOptions(SecurityOptions.Auto);
client.setUseTnef(true); // Use this flag to send as TNEF
client.send(eml1);

Enviar solicitudes de reunión

Microsoft Outlook ofrece funciones de calendario así como gestión de correo electrónico. Cuando un usuario abre un correo con una invitación a un evento, Outlook le solicita que acepte o rechace la invitación. Aspose.Email permite a los desarrolladores agregar funciones de calendario a sus correos electrónicos.

Envío de solicitudes por correo electrónico

Para enviar solicitudes de reunión por correo electrónico, siga estos pasos:

  • Cree una instancia de la MailMessage clase.
  • Especifique las direcciones del remitente y del destinatario usando una instancia del MailMessage clase.
  • Inicialice una instancia de la Appointment clase y pasar sus valores.
  • Especifique resumen y descripción en el Calendar instancia.
  • Añada el Calendar) al MailMessage instancia y pasarle el Appointment instancia.

|Solicitud de reunión iCalendar enviada por correo electrónico| | :- | |todo:image_alt_text| El siguiente fragmento de código le muestra cómo enviar solicitudes por correo electrónico.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

// Create an instance of the MailMessage class
MailMessage msg = new MailMessage();

// Set the sender, recipient, who will receive the meeting request. Basically, the recipient is the same as the meeting attendees
msg.setFrom(MailAddress.to_MailAddress("newcustomeronnet@gmail.com"));
msg.setTo(MailAddressCollection.to_MailAddressCollection("person1@domain.com, person2@domain.com, person3@domain.com, asposetest123@gmail.com"));

// Create Appointment instance
Calendar cal = Calendar.getInstance();
cal.set(2015, Calendar.JULY, 17, 13, 0, 0);
Date startDate = cal.getTime();
cal.set(2015, Calendar.JULY, 17, 14, 0, 0);
Date endDate = cal.getTime();
Appointment app = new Appointment("Room 112", startDate, endDate, msg.getFrom(), msg.getTo());
app.setSummary("Release Meetting");
app.setDescription("Discuss for the next release");

// Add appointment to the message and Create an instance of SmtpClient class
msg.addAlternateView(app.requestApointment());
SmtpClient client = getSmtpClient();

try {
    // Client.Send will send this message
    client.send(msg);
    System.out.println("Message sent");
} catch (Exception ex) {
    System.err.println(ex);
}

Compatibilidad de iCalendar para IBM Lotus Notes

La función de calendario de Aspose.Email se basa en el estándar iCalendar, un estándar para el intercambio de datos de calendario (RFC 2445 o Referencia de sintaxis RFC2445). Por lo tanto, admite no solo Microsoft Outlook sino también IBM Lotus Notes. Para enviar una solicitud de reunión en Lotus Notes, siga los mismos pasos que se mencionaron anteriormente.

Reenviar un correo electrónico usando Cliente SMTP

Reenviando correo electrónico con cliente SMTP

Reenviar un correo electrónico es una práctica común en la comunicación digital diaria. Un correo recibido puede reenviarse a destinatarios específicos sin compartirlo con los remitentes originales. Aspose.Email API SmtpClient provee la capacidad de reenviar un correo electrónico a destinatarios específicos. Su Reenviar el método puede usarse para reenviar un correo electrónico recibido o guardado a los destinatarios deseados como se muestra en este artículo. El siguiente fragmento de código le muestra cómo reenviar un correo electrónico usando SMTP Client.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

// Create an instance of SmtpClient class
SmtpClient client = new SmtpClient();

// Specify your mailing host server, Username, Password, Port and SecurityOptions
client.setHost("mail.server.com");
client.setUsername("username");
client.setPassword("password");
client.setPort(587);
client.setSecurityOptions(SecurityOptions.SSLExplicit);
MailMessage message = MailMessage.load(dataDir + "Message.eml");
client.forward("Recipient1@domain.com", "Recipient2@domain.com", message);

Reenvío de correo electrónico sin usar MailMessage

La API también admite reenviar mensajes EML sin cargarlos primero en MailMessage. Esto es útil en casos donde hay recursos limitados en cuanto a memoria del sistema.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

String host = "mail.server.com";
String username = "username";
String password = "password";
int smtpPort = 587;
String sender = "Sender@domain.com";
MailAddressCollection recipients = new MailAddressCollection();
recipients.add("recepient1@domain.com, recepient2@domain.com");

try (SmtpClient client = new SmtpClient(host, smtpPort, username, password, SecurityOptions.Auto)) {
    String fileName = "test.eml";
    try (FileInputStream fs = new FileInputStream(new File(dataDir + fileName))) {
        client.forward(sender, recipients, fs);
    }
}

Realizando combinación de correspondencia

Las combinaciones de correspondencia le ayudan a crear y enviar un lote de mensajes de correo electrónico similares. El núcleo de los correos es el mismo, pero el contenido puede personalizarse. Normalmente, los datos de contacto del destinatario (nombre, segundo nombre, empresa, etc.) se usan para personalizar el correo.

|Ilustración de cómo funciona una combinación de correspondencia:| | :- | |todo:image_alt_text| Aspose.Email permite a los desarrolladores configurar combinaciones de correspondencia que incluyen datos de una variedad de fuentes de datos.

Para realizar una combinación de correspondencia con Aspose.Email, siga los siguientes pasos:

  1. Cree una función con la firma de nombre
  2. Cree una instancia de la MailMessage clase.
  3. Especifique el remitente, destinatario, asunto y cuerpo.
  4. Cree una firma para el final del correo electrónico.
  5. Cree una instancia de la TemplateEngine clase y pásela al MailMessage instancia.
  6. Obtenga la firma en el TemplateEngine instancia.
  7. Cree una instancia de la DataTable clase.
  8. Agregue las columnas Receipt, FirstName y LastName como fuentes de datos en el DataTable clase.
  9. Cree una instancia de la DataRow clase.
  10. Especifique la dirección de recepción, nombres y apellidos en el DataRow objeto.
  11. Cree una instancia de la MailMessageCollection clase
  12. Especifique el TemplateEngine  y DataTable instancias en el MailMessageCollection instancia.
  13. Cree una instancia de la SmtpClient clase y especificar el servidor, puerto, nombre de usuario y contraseña.
  14. Enviar correos electrónicos usando el SmtpClient clase send método.

En el ejemplo a continuación, #FirstName# indica un DataTable columna, cuyo valor es establecido por el usuario. El siguiente fragmento de código le muestra cómo realizar la combinación de correspondencia.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
public static void run() {
    // The path to the File directory.
    String dstEmail = dataDir + "EmbeddedImage.msg";

    // Create a new MailMessage instance
    MailMessage msg = new MailMessage();

    // Add subject and from address
    msg.setSubject("Hello, #FirstName#");
    msg.setFrom(MailAddress.to_MailAddress("sender@sender.com"));

    // Add email address to send email also Add mesage field to HTML body
    msg.getTo().add("your.email@gmail.com");
    String htmlBody = "Your message here/r/n" + "Thank you for your interest in <STRONG>Aspose.Email</STRONG>.";

    // Use GetSignment as the template routine, which will provide the same signature
    htmlBody += "<br><br>Have fun with it.<br><br>#GetSignature()#";

    msg.setHtmlBody(htmlBody);

    // Create a new TemplateEngine with the MSG message, Register GetSignature routine. It will be used in MSG.
    TemplateEngine engine = new TemplateEngine(msg);
    engine.registerRoutine("GetSignature", new TemplateRoutine() {
        public Object invoke(Object[] args) {
            return getSignature(args);
        }
    });

    // Create an instance of DataTable and Fill a DataTable as data source
    DataTable dt = new DataTable();
    dt.getColumns().add("Receipt");
    dt.getColumns().add("FirstName");
    dt.getColumns().add("LastName");

    DataRow dr;
    dr = dt.newRow();
    dr.set("Receipt", "Nancy&lt;Nancy@somedomain.com&gt;");
    dr.set("FirstName", "Nancy");
    dr.set("LastName", "Doe");
    dt.getRows().add(dr);
    dr = dt.newRow();
    dr.set("Receipt", "Andrew&lt;Andrew@somedomain.com&gt;");
    dr.set("FirstName", "Andrew");
    dr.set("LastName", "Doe");
    dt.getRows().add(dr);
    dr = dt.newRow();
    dr.set("Receipt", "Janet&lt;Janet@somedomain.com&gt;");
    dr.set("FirstName", "Janet");
    dr.set("LastName", "Doe");
    dt.getRows().add(dr);

    MailMessageCollection messages;
    try {
        // Create messages from the message and datasource.
        messages = engine.instantiate(dt);

        // Create an instance of SmtpClient and specify server, port, username and password
        SmtpClient client = new SmtpClient("smtp.gmail.com", 587, "your.email@gmail.com", "your.password");
        client.setSecurityOptions(SecurityOptions.Auto);

        // Send messages in bulk
        client.send(messages);
    } catch (MailException ex) {
        System.err.println(ex);
    }

    catch (SmtpException ex) {
        System.err.println(ex);
    }

    System.out.println("Message sent after performing mail merge.");
}

// Template routine to provide signature
static Object getSignature(Object[] args) {
    return "Aspose.Email Team<br>Aspose Ltd.<br>" + new Date().toString();
}

Realizando combinación de correspondencia fila por fila

El usuario también puede combinar filas de datos individuales para obtener un completo y preparado MailMessage objeto. El TemplateEngine.merge el método puede usarse para realizar una combinación de correspondencia fila por fila.

// Create message from the data in current row.
MailMessage message = engine.merge(currentRow);