Wysyłanie i przekazywanie wiadomości – wysyłanie wiadomości Outlook przy użyciu programu Java

Ten SmtpClient klasa pozwala aplikacjom wysyłać e‑maile przy użyciu protokołu Simple Mail Transfer Protocol (SMTP).

Aby wysłać wiadomość e‑mail i zablokować wątek podczas oczekiwania na przesłanie wiadomości do serwera SMTP, użyj jednej z synchronicznych metod Send. Aby pozwolić głównemu wątkowi programu kontynuować działanie podczas przesyłania e‑maila, użyj beginSend metoda.

Wysyłanie e‑maili synchronicznie

Wiadomość e‑mail można wysłać synchronicznie przy użyciu SmtpClient klasa send metoda. Wysyła określoną wiadomość e‑mail przez serwer SMTP w celu dostarczenia. Nadawca wiadomości, odbiorcy, temat i treść wiadomości są określane przy użyciu obiektów typu String. Aby wysłać wiadomość e‑mail synchronicznie, postępuj zgodnie z poniższymi krokami:

  1. Utwórz instancję MailMessage klasę i ustaw jej właściwości.
  2. Utwórz instancję SmtpClient klasę i określ host, port, nazwę użytkownika oraz hasło.
  3. Wyślij wiadomość przy użyciu SmtpClient klasa send metodę i przekazać MailMessage instancję.

Poniższy fragment kodu Java pokazuje, jak wysłać e‑maile Outlook synchronicznie.

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

Wysyłanie e‑maili asynchronicznie

Czasami możesz chcieć wysyłać pocztę asynchronicznie. Na przykład, jeśli wysyłasz dużą ilość wiadomości przez aplikację, podejście synchroniczne może nie działać. W takiej sytuacji możesz użyć beginSend. The beginSend metoda SmtpClient klasa wysyła wiadomość e‑mail do serwera SMTP w celu dostarczenia. Ta metoda nie blokuje wywołującego wątku i pozwala przekazać obiekt do metody, który zostanie wywołany po zakończeniu operacji. Aby wysłać wiadomość e‑mail Outlook asynchronicznie w Javie, postępuj zgodnie z poniższymi krokami:

  1. Utwórz instancję MailMessage klasę i użyj jej różnych właściwości.
  2. Utwórz instancję SmtpClient klasę i określ host, port, nazwę użytkownika oraz hasło.
  3. Utwórz instancję określoną przez użytkownika, która zostanie przekazana do metody i wywołana po zakończeniu operacji asynchronicznej.
  4. Wyślij wiadomość przy użyciu beginSend metoda SmtpClient klasy i przekazać MailMessage instancji oraz zdefiniowanej przez użytkownika instancji w niej, wraz z funkcją zwrotną, która zostanie wywołana po zakończeniu operacji.

Aby otrzymać powiadomienie, gdy e‑mail zostanie wysłany lub operacja zostanie anulowana, funkcja zwrotna przekazana do beginSend metoda jest wywoływana. Po wywołaniu SmtpClient klasa beginSend metoda nie wymaga czekania aż wiadomość e‑mail zostanie w pełni wysłana. Możemy wywołać inną metodę beginSend jednocześnie. Kiedy e‑mail został wysłany przy użyciu beginSend metoda, fragment kodu wypisuje komunikat („Message Sent”). Poniższy program lub fragment kodu w Javie pokazuje, jak wysyłać e‑maile asynchronicznie.

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

Wysyłanie zapisanych wiadomości z dysku

Pliki EML (pliki poczty elektronicznej Outlook Express) zawierają nagłówek e‑mail, ciało wiadomości i wszelkie załączniki. Aspose.Email umożliwia programistom pracę z plikami EML na różne sposoby. Ten artykuł pokazuje, jak wczytać pliki EML z dysku i wysłać je jako e‑maile przy użyciu SMTP. Możesz wczytać pliki .eml z dysku lub strumienia do MailMessage klasa i wyślij wiadomość e‑mail używając SmtpClient klasa. Ta MailMessage klasa jest główną klasą do tworzenia nowych wiadomości e‑mail, wczytywania plików wiadomości e‑mail z dysku lub strumienia oraz ich zapisywania. Poniższy fragment kodu w Javie pokazuje, jak wysłać zapisane wiadomości z dysku.

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

Wysyłanie e‑maila w formacie czystego tekstu

Poniższe przykłady programistyczne pokazują, jak wysłać wiadomość e‑mail w formacie czystego tekstu. Treść właściwość, właściwość klasy MailMessage klasie, służącej do określania treści czystego tekstu w ciele wiadomości. Aby wysłać wiadomość e‑mail w formacie czystego tekstu, wykonaj następujące kroki:

  • Utwórz instancję MailMessage klasa.
  • Określ adresy e‑mail nadawcy i odbiorcy w MailMessage instancję.
  • Określ Treść zawartość, używana w wiadomości tekstowej.
  • Utwórz instancję SmtpClient klasa i wyślij e‑mail.

Poniższy fragment kodu pokazuje, jak wysłać e‑mail w formacie czystego tekstu.

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

Wysyłanie e‑maila z ciałem HTML

Poniższe przykłady programistyczne pokazują, jak można wysłać prostą wiadomość e‑mail w formacie HTML. HtmlBody, właściwość klasy MailMessage klasie, która służy do określania treści HTML ciała wiadomości. Aby wysłać prosty e‑mail w formacie HTML, wykonaj następujące kroki:

  • Utwórz instancję MailMessage klasa.
  • Określ adres e‑mail nadawcy i odbiorcy w MailMessage instancję.
  • Określ HtmlBody zawartość.
  • Utwórz instancję SmtpClient klasa i wyślij e‑mail przy użyciu send metoda.

Dla potrzeb tego artykułu zawartość HTML e‑maila jest bardzo prosta: This is the HTML body Większość e‑maili HTML będzie bardziej złożona. Poniższy fragment programu w Javie pokazuje, jak wysłać e‑mail z ciałem 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;
}

Wysyłanie e‑maila z alternatywną treścią wiadomości

Poniższe przykłady programistyczne pokazują, jak wysłać prostą wiadomość e‑mail w formacie HTML z alternatywną treścią. Użyj AlternateView klasie, która służy do wskazywania kopii wiadomości e‑mail w różnych formatach. Na przykład, jeśli wyślesz wiadomość w HTML, możesz także udostępnić wersję czystego tekstu dla odbiorców, którzy używają programów pocztowych nieobsługujących HTML. Albo, jeśli wysyłasz newsletter, możesz dostarczyć wersję tekstową dla odbiorców, którzy wybrali otrzymywanie tekstu w formacie plain text. Aby wysłać e‑mail z alternatywną treścią tekstową, wykonaj następujące kroki:

  1. Utwórz instancję MailMessage klasa.
  2. Określ adresy e‑mail nadawcy i odbiorcy w MailMessage instancję.
  3. Utwórz instancję AlternateView klasa.

Tworzy to alternatywny widok wiadomości e‑mail przy użyciu treści określonej w ciągu znaków.

  1. Dodaj instancję AlternateView klasy do MailMessage obiekt.
  2. Utwórz instancję SmtpClient klasa i wyślij e‑mail przy użyciu send metoda.

Poniższy fragment kodu pokazuje, jak wysłać e‑mail z alternatywną treścią tekstową.

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

Wysyłanie e‑maili masowo

Wysyłanie e‑maili w dużych ilościach oznacza wysyłanie serii e‑maili w jednej operacji. Możemy wysłać serię e‑maili używając SmtpClient klasa send przeciążenie metody, które akceptuje MailMessageCollection klasa:

  1. Utwórz instancję SmtpClient klasa.
  2. Określ SmtpClient właściwości klasy.
  3. Utwórz instancję MailMessage klasa.
  4. Określ nadawcę, odbiorcę, temat wiadomości oraz treść w instancji MailMessage klasa.
  5. Powtórz powyższe dwa kroki, jeśli chcesz wysłać e‑mail do innej osoby.
  6. Utwórz instancję MailMessageCollection klasa.
  7. Dodaj instancję MailMessage klasy w obiekcie MailMessageCollection klasa.
  8. Teraz wyślij swój e‑mail używając SmtpClient klasa send metoda przy przekazywaniu instancji MailMessageCollection klasa w niej.

Poniższy fragment kodu pokazuje, jak wysłać e‑maile masowo.

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

Uzyskaj informacje o masowo wysłanych wiadomościach

Kiedy wysyłasz wiadomości masowo, możesz uzyskać informacje o liczbie pomyślnie wysłanych wiadomości oraz o ich liście. SucceededSending zdarzenie jest używane w tym celu.

Poniższy przykład kodu pokazuje, jak uzyskać informacje o liczbie pomyślnie wysłanych wiadomości:

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

Wysyłanie e‑maili z wielokrotnym połączeniem

SmtpClient zapewnia UseMultiConnection właściwość, której można używać do tworzenia wielu połączeń przy intensywnych operacjach. Możesz także ustawić liczbę połączeń używanych w trybie wielokrotnego połączenia, używając SmtpClient.ConnectionsQuantity. Poniższy fragment kodu demonstruje użycie trybu wielokrotnego połączenia do wysyłania wielu wiadomości.

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

Wysyłanie wiadomości jako TNEF

E‑maile TNEF mają specjalne formatowanie, które może zostać utracone przy wysyłaniu przy użyciu standardowego API. Aspose.Email zapewnia możliwość wysyłania e‑maili jako TNEF, zachowując format. SmtpClient klasa UseTnef właściwość może być ustawiona, aby wysłać e‑mail jako TNEF. Poniższy fragment kodu pokazuje, jak wysłać wiadomość jako 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);

Wysyłanie zaproszeń na spotkania

Microsoft Outlook oferuje funkcje kalendarza oraz zarządzanie e‑mailem. Kiedy użytkownik otwiera e‑mail z zaproszeniem na wydarzenie, Outlook pyta go, czy zaakceptować, czy odrzucić zaproszenie. Aspose.Email umożliwia programistom dodawanie funkcji kalendarza do Twoich e‑maili.

Wysyłanie zaproszeń przez e‑mail

Aby wysłać zaproszenia na spotkania przez e‑mail, postępuj zgodnie z poniższymi krokami:

|Żądanie spotkania iCalendar wysłane e‑mailem| | :- | |todo:image_alt_text| Poniższy fragment kodu pokazuje, jak wysłać żądania przez e‑mail.

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

Obsługa iCalendar dla IBM Lotus Notes

Funkcja kalendarza Aspose.Email opiera się na standardzie iCalendar, standardzie wymiany danych kalendarzowych (RFC 2445 lub RFC2445 Syntax Reference). Dlatego obsługuje nie tylko Microsoft Outlook, ale także IBM Lotus Notes. Aby wysłać zaproszenie na spotkanie w Lotus Notes, postępuj zgodnie z tymi samymi krokami, które wymieniono powyżej.

Przekaż e‑mail przy użyciu klienta SMTP

Przekazywanie e‑maili przy użyciu klienta SMTP

Przekazywanie e‑maili jest powszechną praktyką w codziennej komunikacji cyfrowej. Otrzymany e‑mail może być przekazany konkretnym odbiorcom bez udostępniania oryginalnym nadawcom. API Aspose.Email SmtpClient zapewnia możliwość przekazania e‑maila do konkretnych odbiorców. Jego Przekaż metodę można użyć do przekazania odebranego lub zapisanego e‑maila do wybranych odbiorców, jak pokazano w tym artykule. Poniższy fragment kodu pokazuje, jak przekazać e‑mail przy użyciu klienta SMTP.

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

Przekazywanie e‑maili bez użycia MailMessage

API obsługuje również przekazywanie wiadomości EML bez uprzedniego wczytywania do MailMessage. Jest to przydatne w sytuacjach, gdy zasoby systemowe, takie jak pamięć, są ograniczone.

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

Wykonywanie scalania poczty

Scalanie poczty pomaga tworzyć i wysyłać zestaw podobnych wiadomości e‑mail. Główna treść e‑maili jest taka sama, ale zawartość może być spersonalizowana. Zazwyczaj używa się danych kontaktowych odbiorcy (imię, nazwisko, firma itp.) do personalizacji e‑maila.

|Ilustracja, jak działa scalenie korespondencji:| | :- | |todo:image_alt_text| Aspose.Email umożliwia programistom konfigurowanie scalania korespondencji, które obejmuje dane z różnych źródeł danych.

Aby wykonać scalanie poczty przy użyciu Aspose.Email, wykonaj następujące kroki:

  1. Utwórz funkcję o sygnaturze nazwy
  2. Utwórz instancję MailMessage klasa.
  3. Określ nadawcę, odbiorcę, temat i treść.
  4. Utwórz podpis na końcu e‑mail.
  5. Utwórz instancję TemplateEngine klasie i przekaż mu MailMessage instancję.
  6. Pobierz podpis w TemplateEngine instancję.
  7. Utwórz instancję DataTable klasa.
  8. Dodaj kolumny Receipt, FirstName i LastName jako źródła danych w DataTable klasa.
  9. Utwórz instancję DataRow klasa.
  10. Określ adres odbiorcy, imię i nazwisko w DataRow obiekt.
  11. Utwórz instancję MailMessageCollection klasa
  12. Określ TemplateEngine  i DataTable instancje w MailMessageCollection instancję.
  13. Utwórz instancję SmtpClient klasę i określ serwer, port, nazwę użytkownika oraz hasło.
  14. Wysyłaj e‑maile przy użyciu SmtpClient klasa send metoda.

W poniższym przykładzie, #FirstName# wskazuje DataTable kolumnę, której wartość jest ustawiana przez użytkownika. Poniższy fragment kodu pokazuje, jak wykonać scalanie korespondencji.

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

Wykonywanie scalania korespondencji wiersz po wierszu

Użytkownik może również scalić pojedynczy wiersz danych, aby uzyskać kompletny i przygotowany MailMessage obiekt. TemplateEngine.merge metodę można użyć do przeprowadzenia scalania korespondencji wiersz po wierszu.

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