Gửi và Chuyển tiếp Tin nhắn - Gửi Tin Nhắn Outlook bằng Chương trình Java

Cái SmtpClient lớp cho phép các ứng dụng gửi email bằng giao thức Simple Mail Transfer Protocol (SMTP).

Để gửi tin nhắn email và chặn trong khi chờ email được truyền tới máy chủ SMTP, sử dụng một trong các phương thức Send đồng bộ. Để cho phép luồng chính của chương trình tiếp tục thực thi trong khi email được truyền, sử dụng beginSend phương thức.

Gửi Email Đồng Bộ

Tin nhắn email có thể được gửi đồng bộ bằng cách sử dụng SmtpClient lớp send phương thức. Nó gửi tin nhắn email đã chỉ định qua một máy chủ SMTP để chuyển phát. Người gửi, người nhận, tiêu đề và nội dung tin nhắn được chỉ định bằng các đối tượng String. Để gửi tin nhắn email một cách đồng bộ, làm theo các bước dưới đây:

  1. Tạo một thể hiện của MailMessage lớp và đặt các thuộc tính của nó.
  2. Tạo một thể hiện của SmtpClient lớp và chỉ định Host, port, tên người dùng & Mật khẩu.
  3. Gửi Tin Nhắn bằng cách sử dụng SmtpClient lớp send phương thức và truyền vào MailMessage thể hiện.

Đoạn mã Java sau đây cho bạn thấy cách gửi email Outlook một cách đồng bộ.

// 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);
}

Gửi Email Bất Đồng Bộ

Đôi khi, bạn có thể muốn gửi mail một cách bất đồng bộ. Ví dụ, nếu bạn gửi rất nhiều mail thông qua ứng dụng của mình, cách tiếp cận đồng bộ có thể không hoạt động. Trong trường hợp như vậy, bạn có thể sử dụng beginSend. Thuộc tính beginSend phương thức của SmtpClient lớp gửi một tin nhắn email đến máy chủ SMTP để chuyển phát. Phương thức này không chặn luồng gọi và cho phép người gọi truyền một đối tượng vào phương thức sẽ được gọi khi thao tác hoàn thành. Để gửi tin nhắn email Outlook một cách bất đồng bộ trong Java, làm theo các bước sau:

  1. Tạo một thể hiện của MailMessage lớp và sử dụng các thuộc tính khác nhau của nó.
  2. Tạo một thể hiện của SmtpClient lớp và chỉ định host, port, tên người dùng và mật khẩu.
  3. Tạo một instance do người dùng định nghĩa sẽ được truyền vào phương thức và được gọi khi thao tác bất đồng bộ hoàn thành.
  4. Gửi tin nhắn bằng cách sử dụng beginSend phương thức của SmtpClient lớp và truyền vào MailMessage instance và user-defined instance trong nó cùng với một hàm callback sẽ được gọi khi thao tác hoàn thành.

Để nhận thông báo khi email đã được gửi hoặc thao tác đã bị hủy, hàm callback được truyền vào beginSend phương pháp được gọi. Sau khi gọi SmtpClient lớp beginSend phương pháp không cần phải chờ cho một tin nhắn email được gửi hoàn toàn. Chúng ta có thể gọi một phương pháp khác beginSend cùng lúc. Khi một email đã được gửi bằng beginSend phương thức, đoạn mã in ra một thông báo ("Message Sent"). Chương trình Java hoặc đoạn mã dưới đây cho bạn thấy cách gửi email bất đồng bộ.

// 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.");
        }
    }
};

Gửi Các Tin Nhắn Đã Lưu từ Đĩa

Các tệp EML, (tệp Thư điện tử Outlook Express) chứa tiêu đề email, phần thân tin nhắn và bất kỳ tệp đính kèm nào. Aspose.Email cho phép các nhà phát triển làm việc với tệp EML theo nhiều cách khác nhau. Bài viết này cho thấy cách tải tệp EML từ đĩa và gửi chúng dưới dạng email bằng SMTP. Bạn có thể tải các tệp .eml từ đĩa hoặc luồng vào MailMessage lớp và gửi tin nhắn email bằng cách sử dụng SmtpClient lớp. MailMessage lớp là lớp chính để tạo các tin nhắn email mới, tải các tệp tin nhắn email từ đĩa hoặc luồng và lưu các tin nhắn. Đoạn mã Java dưới đây cho thấy cách gửi các tin nhắn đã lưu từ đĩa.

// 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());
}

Gửi Email Văn Bản Thuần

Các mẫu lập trình dưới đây cho thấy cách gửi một tin nhắn email văn bản thuần. Nội dung thuộc tính, một thuộc tính của MailMessage lớp, được dùng để chỉ định nội dung văn bản thuần của phần thân tin. Để gửi một tin nhắn email văn bản thuần, thực hiện các bước sau:

  • Tạo một đối tượng của MailMessage lớp.
  • Xác định địa chỉ email người gửi và người nhận trong MailMessage thể hiện.
  • Chỉ định Nội dung nội dung, dùng cho tin nhắn văn bản thuần.
  • Tạo một đối tượng của SmtpClient lớp và gửi email.

Đoạn mã dưới đây cho bạn thấy cách gửi email dạng văn bản thuần.

// 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);
}

Gửi Email với Nội dung HTML

Các mẫu lập trình dưới đây cho thấy cách bạn có thể gửi một tin nhắn email HTML đơn giản. HtmlBody, một thuộc tính của MailMessage lớp, được dùng để chỉ định nội dung HTML của phần thân tin nhắn. Để gửi một email HTML đơn giản, thực hiện các bước sau:

  • Tạo một đối tượng của MailMessage lớp.
  • Xác định địa chỉ email người gửi và người nhận trong MailMessage thể hiện.
  • Chỉ định HtmlBody nội dung.
  • Tạo một đối tượng của SmtpClient lớp và gửi email bằng cách sử dụng send phương thức.

Với mục đích của bài viết này, nội dung HTML của email là cơ bản: This is the HTML body Hầu hết các email HTML sẽ phức tạp hơn. Đoạn mã Java dưới đây cho bạn thấy cách gửi email với nội dung 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;
}

Gửi Email với Nội Dung Tin Nhắn Thay Thế

Các mẫu lập trình dưới đây cho thấy cách gửi một tin nhắn email HTML đơn giản với nội dung thay thế. Sử dụng AlternateView lớp để chỉ định các bản sao của tin nhắn email ở các định dạng khác nhau. Ví dụ, nếu bạn gửi tin nhắn dưới dạng HTML, bạn cũng có thể muốn cung cấp phiên bản văn bản thuần cho những người nhận dùng trình đọc email không hiển thị nội dung HTML. Hoặc, nếu bạn gửi bản tin, bạn có thể muốn cung cấp bản sao văn bản thuần cho những người nhận đã chọn nhận phiên bản văn bản thuần. Để gửi email với nội dung thay thế, thực hiện các bước sau:

  1. Tạo một đối tượng của MailMessage lớp.
  2. Xác định địa chỉ email người gửi và người nhận trong MailMessage thể hiện.
  3. Tạo một đối tượng của AlternateView lớp.

Điều này tạo một chế độ xem thay thế cho tin nhắn email bằng nội dung được chỉ định trong chuỗi.

  1. Thêm thể hiện của AlternateView lớp tới MailMessage đối tượng.
  2. Tạo một đối tượng của SmtpClient lớp và gửi email bằng cách sử dụng send phương thức.

Đoạn mã dưới đây cho bạn thấy cách gửi email với nội dung thay thế.

// 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);

Gửi Email Hàng loạt

Gửi email hàng loạt có nghĩa là gửi một nhóm email trong một tin nhắn. Chúng ta có thể gửi một loạt email bằng cách sử dụng của SmtpClient lớp send phương thức overload chấp nhận một MailMessageCollection lớp:

  1. Tạo một thể hiện của SmtpClient lớp.
  2. Chỉ định SmtpClient các thuộc tính của lớp.
  3. Tạo một đối tượng của MailMessage lớp.
  4. Xác định người gửi, người nhận, tiêu đề thư và nội dung trong thể hiện của MailMessage lớp.
  5. Lặp lại hai bước trên một lần nữa, nếu bạn muốn gửi email cho người khác.
  6. Tạo một thể hiện của MailMessageCollection lớp.
  7. Thêm một thể hiện của MailMessage lớp trong đối tượng của MailMessageCollection lớp.
  8. Bây giờ gửi email của bạn bằng cách sử dụng SmtpClient lớp send phương thức bằng cách truyền thể hiện của MailMessageCollection lớp trong đó.

Đoạn mã dưới đây cho bạn thấy cách gửi email hàng loạt.

// 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);
}

Lấy Thông tin về Các Tin Nhắn Hàng Loạt Đã Gửi

Khi bạn gửi tin nhắn hàng loạt, bạn có thể nhận thông tin về số lượng tin nhắn đã gửi thành công và danh sách các tin nhắn này. SucceededSending sự kiện được sử dụng cho mục đích này.

Mẫu mã dưới đây cho thấy cách lấy thông tin về số lượng tin nhắn đã gửi thành công:

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.");
}

Gửi Email với Đa Kết nối

SmtpClient cung cấp một UseMultiConnection thuộc tính có thể được sử dụng để tạo nhiều kết nối cho các thao tác nặng. Bạn cũng có thể đặt số lượng kết nối sẽ được sử dụng trong chế độ đa kết nối bằng cách sử dụng SmtpClient.ConnectionsQuantity. Đoạn mã dưới đây minh họa việc sử dụng chế độ đa kết nối để gửi nhiều tin nhắn.

// 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);

Gửi Tin Nhắn dưới dạng TNEF

Email TNEF có định dạng đặc biệt có thể bị mất khi gửi bằng API tiêu chuẩn. Aspose.Email cung cấp khả năng gửi email dưới dạng TNEF, do đó giữ nguyên định dạng. The SmtpClient lớp UseTnef thuộc tính có thể được đặt để gửi email dưới dạng TNEF. Đoạn mã sau cho bạn thấy cách gửi tin nhắn dưới dạng 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);

Gửi Yêu cầu Họp

Microsoft Outlook cung cấp chức năng lịch cũng như quản lý email. Khi người dùng mở một email có lời mời tham dự sự kiện, Outlook sẽ yêu cầu họ chấp nhận hoặc từ chối lời mời. Aspose.Email cho phép các nhà phát triển thêm chức năng lịch vào email của bạn.

Gửi Yêu Cầu qua Email

Để gửi lời mời họp qua email, làm theo các bước sau:

  • Tạo một đối tượng của MailMessage lớp.
  • Chỉ định địa chỉ người gửi và người nhận bằng một instance của MailMessage lớp.
  • Khởi tạo một instance của Appointment lớp và truyền các giá trị của nó.
  • Chỉ định tóm tắt và mô tả trong Calendar thể hiện.
  • Thêm Calendar) tới MailMessage instance và truyền vào Appointment thể hiện.

|Yêu cầu họp iCalendar được gửi qua email| | :- | |todo:image_alt_text| Đoạn mã sau cho bạn thấy cách gửi yêu cầu qua Email.

// 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);
}

iCalendar hỗ trợ cho IBM Lotus Notes

Tính năng lịch của Aspose.Email dựa trên tiêu chuẩn iCalendar, một tiêu chuẩn trao đổi dữ liệu lịch (RFC 2445 hoặc Tham chiếu Cú pháp RFC2445). Do đó, nó hỗ trợ không chỉ Microsoft Outlook mà còn IBM Lotus Notes. Để gửi lời mời họp trong Lotus Notes, làm theo các bước đã nêu ở trên.

Chuyển Tiếp Email bằng SMTP Client

Chuyển Tiếp Email bằng SMTP client

Chuyển tiếp email là một thực hành phổ biến trong giao tiếp kỹ thuật số hàng ngày. Một email nhận được có thể được chuyển tiếp tới các người nhận cụ thể mà không chia sẻ với người gửi gốc. Aspose.Email API SmtpClient cung cấp khả năng chuyển tiếp email tới các người nhận cụ thể. Nó Chuyển tiếp phương thức có thể được sử dụng để chuyển tiếp email đã nhận hoặc đã lưu tới các người nhận mong muốn như được mô tả trong bài viết này. Đoạn mã sau cho bạn thấy cách chuyển tiếp email bằng 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);

Chuyển Tiếp Email mà không dùng MailMessage

API cũng hỗ trợ chuyển tiếp các tin nhắn EML mà không cần tải vào MailMessage. Điều này hữu ích trong trường hợp tài nguyên hệ thống, như bộ nhớ, bị giới hạn.

// 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);
    }
}

Thực hiện Mail Merge

Mail merge giúp bạn tạo và gửi một loạt các tin nhắn email tương tự. Nội dung chính của các email là giống nhau, nhưng nội dung có thể được cá nhân hoá. Thông thường, thông tin liên hệ của người nhận (tên, họ, công ty, …) được dùng để cá nhân hoá email.

|Minh họa cách mail merge hoạt động:| | :- | |todo:image_alt_text| Aspose.Email cho phép các nhà phát triển thiết lập mail merge bao gồm dữ liệu từ nhiều nguồn dữ liệu khác nhau.

Để thực hiện mail merge với Aspose.Email, thực hiện các bước sau:

  1. Tạo một hàm với chữ ký tên
  2. Tạo một đối tượng của MailMessage lớp.
  3. Chỉ định người gửi, người nhận, tiêu đề và nội dung.
  4. Tạo chữ ký cho phần cuối của email.
  5. Tạo một đối tượng của TemplateEngine lớp và truyền cho nó MailMessage thể hiện.
  6. Lấy chữ ký trong TemplateEngine thể hiện.
  7. Tạo một đối tượng của DataTable lớp.
  8. Thêm các cột Receipt, FirstNameLastName làm nguồn dữ liệu trong DataTable lớp.
  9. Tạo một đối tượng của DataRow lớp.
  10. Chỉ định địa chỉ nhận, họ và tên trong DataRow đối tượng.
  11. Tạo một đối tượng của MailMessageCollection lớp
  12. Chỉ định TemplateEngine  và DataTable các instance trong MailMessageCollection thể hiện.
  13. Tạo một đối tượng của SmtpClient lớp và chỉ định server, port, tên người dùng và mật khẩu.
  14. Gửi email bằng cách sử dụng SmtpClient lớp send phương thức.

Trong ví dụ bên dưới, #FirstName# chỉ một DataTable cột, giá trị của nó được người dùng đặt. Đoạn mã sau đây cho bạn thấy cách thực hiện Mail Merge.

// 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();
}

Thực Hiện Mail Merge Theo Hàng

Người dùng có thể hợp nhất từng hàng dữ liệu riêng lẻ để có được một kết quả hoàn chỉnh và đã chuẩn bị MailMessage đối tượng. The TemplateEngine.merge phương thức có thể được sử dụng để thực hiện mail merge theo hàng.

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