package io.vertx.example.mail;

import io.vertx.core.AbstractVerticle;
import io.vertx.example.util.Runner;
import io.vertx.ext.mail.MailClient;
import io.vertx.ext.mail.MailConfig;
import io.vertx.ext.mail.MailMessage;

import java.util.Arrays;

/**
 * send a mail with default config via localhost:25
 *
 * @author <a href="http://oss.lehmann.cx/">Alexander Lehmann</a>
 */
public class MailLocalhost extends AbstractVerticle {

  // Convenience method so you can run it in your IDE
  public static void main(String[] args) {
    Runner.runExample(MailLocalhost.class);
  }

  @Override
  public void start() {
    // Start a local STMP server, remove this line if you want to use your own server.
    // It just prints the sent message to the console
    LocalSmtpServer.start(2525);

    MailClient mailClient = MailClient.createShared(vertx, new MailConfig().setPort(2525));

    MailMessage email = new MailMessage()
        .setFrom("user@example.com (Sender)")
        .setTo(Arrays.asList(
            "user@example.com (User Name)",
            "other@example.com (Another User)"))
        .setBounceAddress("user@example.com (Bounce)")
        .setSubject("Test email")
        .setText("this is a test email");

    mailClient.sendMail(email, result -> {
      if (result.succeeded()) {
        System.out.println(result.result());
        System.out.println("Mail sent");
      } else {
        System.out.println("got exception");
        result.cause().printStackTrace();
      }
    });
  }

}