@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(); } }); }
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(2528); MailConfig mailConfig = new MailConfig().setHostname("localhost").setPort(2528); MailClient mailClient = MailClient.createShared(vertx, mailConfig); MailMessage email = new MailMessage() .setFrom("user1@example.com") .setTo(Arrays.asList("user2@example.com", "user3@example.com", "user4@example.com")) .addHeader("X-Mailer", "Vert.x Mail-Client 3.6.2") .addHeader("Message-ID", "12345@example.com") .addHeader("Reply-To", "reply@example.com") .addHeader("Received", "by vertx mail service") .addHeader("Received", "from [192.168.1.1] by localhost") .setText("This message should have a custom Message-ID"); 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(); } }); }
.setTo("user@example.com (User Name)") .setSubject("Test email") .setText("full message is readable as html only") .setHtml("visit vert.x <a href=\"http://vertx.io/\"><img src=\"cid:image1@example.com\"></a>");
.setBounceAddress("bounce@example.com") .setSubject("Test email with HTML") .setText("this is a message") .setHtml("<a href=\"http://vertx.io\">vertx.io</a>");
@Override public Completable send(Mail email) { Single<Optional<Buffer>> htmlRender = email.renderHtml().map(buffer -> Optional.of(buffer)).toSingle(Optional.empty()); Single<Buffer> textRender = email.renderText(); return Single.zip(textRender, htmlRender, (text, html) -> { MailMessage message = new MailMessage(); message.setFrom(email.from); if(email.to != null) message.setTo(Arrays.asList(email.to)); if(email.cc != null) message.setCc(Arrays.asList(email.cc)); if(email.bcc != null) message.setBcc(Arrays.asList(email.bcc)); message.setSubject(email.subject); message.setText(text.toString()); if(html.isPresent()) message.setHtml(html.get().toString()); return mailClient.rxSendMail(message).ignoreElement(); }).flatMapCompletable(c -> c); } }
@Override public Completable send(Mail email) { Single<Optional<Buffer>> htmlRender = email.renderHtml().map(buffer -> Optional.of(buffer)).toSingle(Optional.empty()); Single<Buffer> textRender = email.renderText(); return Single.zip(textRender, htmlRender, (text, html) -> { MailMessage message = new MailMessage(); message.setFrom(email.from); if(email.to != null) message.setTo(Arrays.asList(email.to)); if(email.cc != null) message.setCc(Arrays.asList(email.cc)); if(email.bcc != null) message.setBcc(Arrays.asList(email.bcc)); message.setSubject(email.subject); message.setText(text.toString()); if(html.isPresent()) message.setHtml(html.get().toString()); return mailClient.rxSendMail(message).ignoreElement(); }).flatMapCompletable(c -> c); } }
@Test public void testMailTextContainsTabs2() throws Exception { MailMessage message = new MailMessage(); message.setText("\tä\n"); String mime = new MailEncoder(message, HOSTNAME).encode(); assertThat(mime, not(containsString("\t"))); assertThat(mime, containsString("=09")); }
@Test public void testMailTextContainsTabs() throws Exception { MailMessage message = new MailMessage(); message.setText("\t\n"); String mime = new MailEncoder(message, HOSTNAME).encode(); assertThat(mime, containsString("\t")); assertThat(mime, not(containsString("=09"))); }
@Test public void testText() { MailMessage mailMessage = new MailMessage(); mailMessage.setText("mail text"); assertEquals("mail text", mailMessage.getText()); }
@Test public void testTextPlain() throws Exception { MailMessage message = new MailMessage(); final String text = "the quick brown fox jumps over the lazy dog"; message.setText(text); String mime = new MailEncoder(message, HOSTNAME).encode(); assertThat(mime, containsString("Content-Type: text/plain")); assertThat(mime, containsString(text)); assertEquals(text, TestUtils.getMessage(mime).getContent()); }
@Test public void testTextPlain76Chars() throws Exception { MailMessage message = new MailMessage(); final String text = "ä**********************************************************************"; final String encodedSubject = "=C3=A4**********************************************************************"; message.setText(text); String mime = new MailEncoder(message, HOSTNAME).encode(); assertThat(mime, containsString(encodedSubject)); assertEquals(text, TestUtils.getMessage(mime).getContent()); }
@Test public void testTextPlainEOLSpace() throws Exception { MailMessage message = new MailMessage(); final String text = "ä "; final String encodedSubject = "=C3=A4=20"; message.setText(text); String mime = new MailEncoder(message, HOSTNAME).encode(); assertThat(mime, containsString(encodedSubject)); assertEquals(text, TestUtils.getMessage(mime).getContent()); }
private void mailTestText(final String text) { MailMessage message = exampleMessage(); message.setText(text); testSuccess(mailClientLogin(), message, () -> { final MimeMessage mimeMessage = wiser.getMessages().get(0).getMimeMessage(); testContext.assertEquals(text, TestUtils.conv2nl(TestUtils.inputStreamToString(mimeMessage.getInputStream()))); }); }
@Test public void mailTestMissingNL(TestContext testContext) { this.testContext=testContext; MailMessage message = exampleMessage(); // the protocol adds a newline at the end if there isn't one message.setText("."); testSuccess(mailClientLogin(), message, () -> { final MimeMessage mimeMessage = wiser.getMessages().get(0).getMimeMessage(); testContext.assertEquals(".\n", TestUtils.conv2nl(TestUtils.inputStreamToString(mimeMessage.getInputStream()))); }); }
@Test public void testEncode() { MailMessage message = new MailMessage(); message.setSubject("this is the subject_äöü"); message.setTo("user@example.com"); message.setCc(Arrays.asList("user@example.com (User Name)", "user2@example.com (User with Ü)", "user3@example.com (ÄÖÜ)")); message.setFrom("from@example.com (User with Ü)"); message .setText("asdf=\n\näöüÄÖÜ\u00ff\n\t=======================================================================================\n"); message.setHtml("<a href=\"http://vertx.io\">vertx.io</a>\n"); List<MailAttachment> attachments = new ArrayList<MailAttachment>(); attachments .add(new MailAttachment() .setData(Buffer.buffer("****************************************************************************************")) .setName("file.txt")); attachments.add(new MailAttachment().setData(Buffer.buffer("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"))); attachments.add(new MailAttachment() .setData(Buffer.buffer("испытание", "UTF-8"))); attachments.add(new MailAttachment().setData(TestUtils.asBuffer(new int[]{0xD0, 0xB8, 0xD1, 0x81, 0xD0, 0xBF, 0xD1, 0x8B, 0xD1, 0x82, 0xD0, 0xB0, 0xD0, 0xBD, 0xD0, 0xB8, 0xD0, 0xB5}))); message.setAttachment(attachments); MailEncoder encoder = new MailEncoder(message, HOSTNAME); log.info(encoder.encode()); }
@Test public void testHtmlWithInlineImg() { MailMessage email = new MailMessage() .setFrom("user@example.net") .setTo("user@example.net") .setSubject("Test email") .setText("this mail is readable as html only") .setHtml("<img src=\"cid:image1@localhost\">"); List<MailAttachment> list=new ArrayList<MailAttachment>(); MailAttachment attachment = new MailAttachment(); attachment.setData(Buffer.buffer("******")); attachment.setContentType("image/jpg"); attachment.setName("image1.jpg"); attachment.setDisposition("inline"); attachment.setContentId("image1@localhost"); list.add(attachment); email.setInlineAttachment(list); String encoded = new MailEncoder(email, HOSTNAME).encode(); System.out.println(encoded); assertThat(encoded, containsString("Content-ID: image1@localhost")); }
@Test public void mailTest(TestContext context) { log.info("starting"); Async async = context.async(); MailClient mailClient = MailClient.createNonShared(vertx, mailConfig()); MailMessage email = new MailMessage() .setFrom("user@example.com") .setTo("user@example.com") .setSubject("Test email") .setText("this is a message"); mailClient.sendMail(email, result -> { log.info("mail finished"); if (result.succeeded()) { log.info(result.result().toString()); async.complete(); } else { log.warn("got exception", result.cause()); context.fail(result.cause()); } }); }
@Test public void mailTest2(TestContext context) { log.info("starting"); Async async = context.async(); MailClient mailClient = MailClient.createNonShared(vertx, mailConfig()); MailMessage email = new MailMessage() .setFrom("user@example.com") .setTo("user@example.com") .setSubject("Test email") .setText("this is a message"); mailClient.sendMail(email, result -> { log.info("mail finished"); if (result.succeeded()) { log.info(result.result().toString()); async.complete(); } else { log.warn("got exception", result.cause()); context.fail(result.cause()); } }); }
@Test public void testFixedHeadersMessage() { MailMessage message = new MailMessage(); message.setHeaders(new CaseInsensitiveHeaders()); message.setFixedHeaders(true); message.setText("message text"); String mime = new MailEncoder(message, HOSTNAME).encode(); assertEquals("\nmessage text", TestUtils.conv2nl(mime)); }
@Test public void testFixedHeadersMultiple() { MailMessage message = new MailMessage(); final MultiMap headers = new CaseInsensitiveHeaders(); headers.add("Header", "value1"); headers.add("Header", "value2"); headers.add("Header2", "value3"); headers.add("Header", "value4"); message.setHeaders(headers); message.setFixedHeaders(true); message.setText("message text"); String mime = new MailEncoder(message, HOSTNAME).encode(); assertEquals("Header: value1\n" + "Header: value2\n" + "Header2: value3\n" + "Header: value4\n" + "\n" + "message text", TestUtils.conv2nl(mime)); }