/** * create a non shared instance of the mail client * @param vertx the Vertx instance the operation will be run in * @param config MailConfig configuration to be used for sending mails * @return MailClient instance that can then be used to send multiple mails */ public static io.vertx.rxjava.ext.mail.MailClient createNonShared(io.vertx.rxjava.core.Vertx vertx, MailConfig config) { io.vertx.rxjava.ext.mail.MailClient ret = io.vertx.rxjava.ext.mail.MailClient.newInstance(io.vertx.ext.mail.MailClient.createNonShared(vertx.getDelegate(), config)); return ret; }
/** * create a non shared instance of the mail client * @param vertx the Vertx instance the operation will be run in * @param config MailConfig configuration to be used for sending mails * @return MailClient instance that can then be used to send multiple mails */ public static io.vertx.rxjava.ext.mail.MailClient createNonShared(io.vertx.rxjava.core.Vertx vertx, MailConfig config) { io.vertx.rxjava.ext.mail.MailClient ret = io.vertx.rxjava.ext.mail.MailClient.newInstance(io.vertx.ext.mail.MailClient.createNonShared(vertx.getDelegate(), config)); return ret; }
/** * @return */ protected MailClient mailClientLogin() { return MailClient.createNonShared(vertx, configLogin()); }
public static io.vertx.ext.mail.MailClient createNonShared(io.vertx.ext.mail.MailClient j_receiver, io.vertx.core.Vertx vertx, java.util.Map<String, Object> config) { return io.vertx.core.impl.ConversionHelper.fromObject(io.vertx.ext.mail.MailClient.createNonShared(vertx, config != null ? new io.vertx.ext.mail.MailConfig(io.vertx.core.impl.ConversionHelper.toJsonObject(config)) : null)); } public static io.vertx.ext.mail.MailClient createShared(io.vertx.ext.mail.MailClient j_receiver, io.vertx.core.Vertx vertx, java.util.Map<String, Object> config, java.lang.String poolName) {
/** * @return */ protected MailClient mailClientLogin(String user, String pw) { return MailClient.createNonShared(vertx, configLogin(user, pw)); }
/** * @return */ protected MailClient mailClientNoSSL() { return MailClient.createNonShared(vertx, configNoSSL()); }
@Override public void start() { service = new MailServiceImpl(MailClient.createNonShared(vertx, new MailConfig(config()))); // And register it on the event bus against the configured address final String address = config().getString("address"); if (address == null) { throw new IllegalStateException("address field must be specified in config for client verticle"); } ProxyHelper.registerService(MailService.class, vertx, service, address); }
@Test public void connectionRefusedTest(TestContext testContext) { this.testContext=testContext; testException(MailClient.createNonShared(vertx, new MailConfig("localhost", 1588))); }
@Test public void mailTestTLSNoTrust(TestContext testContext) { this.testContext=testContext; MailClient mailClient = MailClient.createNonShared(vertx, configLogin().setStarttls(StartTLSOptions.REQUIRED)); testException(mailClient); }
/** * test we have Login REQUIRED but no login data in the config */ @Test public void authAuthDataMissingTest(TestContext testContext) { this.testContext=testContext; smtpServer.setDialogue("220 example.com ESMTP", "EHLO", "250-example.com\n" + "250 AUTH PLAIN"); testException(MailClient.createNonShared(vertx, defaultConfig().setLogin(LoginOption.REQUIRED))); }
@Test public void mailTestSSLNoTrust(TestContext testContext) { this.testContext = testContext; startServer(SERVER2_JKS); final MailConfig config = new MailConfig("localhost", 1465, StartTLSOptions.DISABLED, LoginOption.DISABLED) .setSsl(true); MailClient mailClient = MailClient.createNonShared(vertx, config); testException(mailClient, SSLHandshakeException.class); }
@Test public void authSelectMethodsNoneTest(TestContext testContext) { this.testContext=testContext; smtpServer.setDialogue("220 example.com ESMTP", "EHLO", "250-example.com\n" + "250 AUTH PLAIN LOGIN"); testException(MailClient.createNonShared(vertx, configLogin().setAuthMethods("DIGEST-MD5 CRAM-MD5"))); }
@Test public void mailTestSSLValidCertIpv6_3(TestContext testContext) { Assume.assumeFalse("no ipv6 support", NetUtil.isIpV4StackPreferred() || "true".equals(System.getProperty("test.disableIpV6"))); this.testContext = testContext; startServer(SERVER_JKS); final MailConfig config = new MailConfig("[0000:0000:0000:0000:0000:0000:0000:0001]", 1465, StartTLSOptions.DISABLED, LoginOption.DISABLED) .setSsl(true).setKeyStore(CLIENT_JKS).setKeyStorePassword("password"); MailClient mailClient = MailClient.createNonShared(vertx, config); testSuccess(mailClient); }
@Test public void mailTestSSLValidCertIpv6(TestContext testContext) { // don't run ipv6 tests when ipv4 is preferred, this should enable running the tests // on CI where ipv6 is not configured Assume.assumeFalse("no ipv6 support", NetUtil.isIpV4StackPreferred() || "true".equals(System.getProperty("test.disableIpV6"))); this.testContext = testContext; startServer(SERVER_JKS); final MailConfig config = new MailConfig("::1", 1465, StartTLSOptions.DISABLED, LoginOption.DISABLED) .setSsl(true).setKeyStore(CLIENT_JKS).setKeyStorePassword("password"); MailClient mailClient = MailClient.createNonShared(vertx, config); testSuccess(mailClient); }
@Test public void mailTestSSLValidCertIpv6_2(TestContext testContext) { Assume.assumeFalse("no ipv6 support", NetUtil.isIpV4StackPreferred() || "true".equals(System.getProperty("test.disableIpV6"))); this.testContext = testContext; startServer(SERVER_JKS); final MailConfig config = new MailConfig("[::1]", 1465, StartTLSOptions.DISABLED, LoginOption.DISABLED) .setSsl(true).setKeyStore(CLIENT_JKS).setKeyStorePassword("password"); MailClient mailClient = MailClient.createNonShared(vertx, config); testSuccess(mailClient); }
@Test public void poolCountRisesConnRefusedTest(TestContext testContext) { Async async = testContext.async(); MailClient mailClient = MailClient.createNonShared(vertx, new MailConfig("localhost", 20025).setMaxPoolSize(1)); mailClient.sendMail(exampleMessage(), result -> { testContext.assertTrue(result.failed()); mailClient.sendMail(exampleMessage(), result2 -> { testContext.assertTrue(result2.failed()); async.complete(); }); }); }
@Test public void mailTestTLSValidCertWrongHost(TestContext testContext) { this.testContext = testContext; final MailConfig config = configLogin().setHostname("127.0.0.1").setStarttls(StartTLSOptions.REQUIRED) .setKeyStore("src/test/resources/certs/client.jks").setKeyStorePassword("password"); MailClient mailClient = MailClient.createNonShared(vertx, config); testException(mailClient); }
@Test public void mailTestTLSCorrectCert(TestContext testContext) { this.testContext = testContext; final MailConfig config = configLogin().setStarttls(StartTLSOptions.REQUIRED) .setKeyStore("src/test/resources/certs/client.jks").setKeyStorePassword("password"); MailClient mailClient = MailClient.createNonShared(vertx, config); testSuccess(mailClient, exampleMessage(), assertExampleMessage()); }
@Test public void mailTestTLSCase(TestContext testContext) { this.testContext = testContext; final MailConfig config = configLogin().setHostname("LOCALHOST").setStarttls(StartTLSOptions.REQUIRED) .setKeyStore("src/test/resources/certs/client.jks").setKeyStorePassword("password"); MailClient mailClient = MailClient.createNonShared(vertx, config); testSuccess(mailClient, exampleMessage(), assertExampleMessage()); }
@Test public void mailTestTLSWrongHostTrustAll(TestContext testContext) { this.testContext = testContext; final MailConfig config = defaultConfig().setHostname("127.0.0.1").setPort(1587).setStarttls(StartTLSOptions.REQUIRED) .setKeyStore("src/test/resources/certs/client.jks").setKeyStorePassword("password").setTrustAll(true); MailClient mailClient = MailClient.createNonShared(vertx, config); testSuccess(mailClient); }