Search in sources :

Example 16 with Email

use of org.simplejavamail.api.email.Email in project simple-java-mail by bbottema.

the class MailerLiveTest method createMailSession_OutlookMessageSmimeEncryptTest.

@Test
public void createMailSession_OutlookMessageSmimeEncryptTest() throws IOException, MessagingException, ExecutionException, InterruptedException {
    EmailPopulatingBuilder builder = readOutlookMessage("test-messages/HTML mail with replyto and attachment and embedded image.msg");
    builder.encryptWithSmime(new File(RESOURCES_PKCS + "/smime_test_user.pem.standard.crt"));
    Email email = assertSendingEmail(builder, false, true, false, true, false);
    verifyReceivedOutlookEmail(email, false, true);
    EmailAssert.assertThat(email).wasMergedWithSmimeSignedMessage();
    EmailAssert.assertThat(email).hasOriginalSmimeDetails(OriginalSmimeDetailsImpl.builder().smimeMode(SmimeMode.ENCRYPTED).smimeMime("application/pkcs7-mime").smimeType("enveloped-data").smimeName("smime.p7m").build());
}
Also used : Email(org.simplejavamail.api.email.Email) EmailConverter.mimeMessageToEmail(org.simplejavamail.converter.EmailConverter.mimeMessageToEmail) EmailPopulatingBuilder(org.simplejavamail.api.email.EmailPopulatingBuilder) InternalEmailPopulatingBuilder(org.simplejavamail.email.internal.InternalEmailPopulatingBuilder) File(java.io.File) Test(org.junit.Test)

Example 17 with Email

use of org.simplejavamail.api.email.Email in project simple-java-mail by bbottema.

the class MailerLiveTest method assertSendingEmail.

private Email assertSendingEmail(final EmailPopulatingBuilder originalEmailPopulatingBuilder, boolean compensateForDresscodeAttachmentNameOverrideErasure, boolean skipChecksDueToSmime, boolean async, final boolean sentDateWasFixed, final boolean dynamicImageEmbeddingWasUsed) throws MessagingException, ExecutionException, InterruptedException {
    Email originalEmail = originalEmailPopulatingBuilder.buildEmail();
    if (!async) {
        mailer.sendMail(originalEmail);
    } else {
        verifyNonnullOrEmpty(mailer.sendMail(originalEmail, async)).get();
    }
    MimeMessageAndEnvelope receivedMimeMessage = smtpServerRule.getOnlyMessage();
    assertThat(receivedMimeMessage.getMimeMessage().getMessageID()).isEqualTo(originalEmail.getId());
    if (originalEmail.getBounceToRecipient() != null) {
        assertThat(receivedMimeMessage.getEnvelopeSender()).isEqualTo(originalEmail.getBounceToRecipient().getAddress());
    } else {
        assertThat(receivedMimeMessage.getEnvelopeSender()).isEqualTo(originalEmail.getFromRecipient().getAddress());
    }
    Email receivedEmail = mimeMessageToEmail(receivedMimeMessage.getMimeMessage(), loadPkcs12KeyStore());
    if (!sentDateWasFixed) {
        GregorianCalendar receiveWindowStart = new GregorianCalendar();
        receiveWindowStart.add(Calendar.SECOND, -10);
        assertThat(receivedEmail.getSentDate()).isBetween(receiveWindowStart.getTime(), new Date());
    } else {
        assertThat(receivedEmail.getSentDate()).isEqualTo(originalEmailPopulatingBuilder.getSentDate());
    }
    // ID will always be generated when sending: if set to a specific value, just assume the generated one
    if (originalEmailPopulatingBuilder.getId() == null) {
        originalEmailPopulatingBuilder.fixingMessageId(receivedEmail.getId());
    }
    // sent-date will always be generated when sending: if not set to a specific value, just assume the generated one
    if (originalEmailPopulatingBuilder.getSentDate() == null) {
        originalEmailPopulatingBuilder.fixingSentDate(verifyNonnullOrEmpty(receivedEmail.getSentDate()));
    }
    // hack: it seems Wiser automatically defaults replyTo address to the From address if left empty
    if (originalEmailPopulatingBuilder.getReplyToRecipient() == null) {
        originalEmailPopulatingBuilder.withReplyTo(originalEmailPopulatingBuilder.getFromRecipient());
    }
    // received email will always have an id, so let's make sure we're able to compare to the original email object
    if (originalEmailPopulatingBuilder.getHeaders().get("Message-ID") == null) {
        originalEmailPopulatingBuilder.withHeader("Message-ID", originalEmail.getId());
    }
    // bounce recipient is not part of the Mimemessage, but the Envelope and is configured on the Session and is not received back on the MimeMessage
    if (originalEmailPopulatingBuilder.getBounceToRecipient() != null) {
        originalEmailPopulatingBuilder.clearBounceTo();
    }
    if (originalEmailPopulatingBuilder.getOriginalSmimeDetails() instanceof PlainSmimeDetails) {
        // because the S/MIME module is loaded, the default PLAIN version gets replaced with the one from the module
        ((InternalEmailPopulatingBuilder) originalEmailPopulatingBuilder).withOriginalSmimeDetails(OriginalSmimeDetailsImpl.builder().build());
    }
    if (compensateForDresscodeAttachmentNameOverrideErasure) {
        TestDataHelper.fixDresscodeAttachment(receivedEmail);
    }
    if (!skipChecksDueToSmime) {
        // reading a signed mail is different from building a new one
        assertThat(receivedEmail).isEqualTo(originalEmailPopulatingBuilder.buildEmail());
    }
    return receivedEmail;
}
Also used : Email(org.simplejavamail.api.email.Email) EmailConverter.mimeMessageToEmail(org.simplejavamail.converter.EmailConverter.mimeMessageToEmail) MimeMessageAndEnvelope(testutil.testrules.MimeMessageAndEnvelope) GregorianCalendar(java.util.GregorianCalendar) InternalEmailPopulatingBuilder(org.simplejavamail.email.internal.InternalEmailPopulatingBuilder) Date(java.util.Date) PlainSmimeDetails(org.simplejavamail.api.internal.smimesupport.model.PlainSmimeDetails)

Example 18 with Email

use of org.simplejavamail.api.email.Email in project simple-java-mail by bbottema.

the class MailerTest method testCustomMailer_sendEmail.

@Test
public void testCustomMailer_sendEmail() throws IOException {
    final Email email = EmailHelper.createDummyEmailBuilder(true, false, false, true, false, false).buildEmail();
    final CustomMailer customMailerMock = mock(CustomMailer.class);
    getMailerWithCustomMailer(customMailerMock).sendMail(email);
    verify(customMailerMock).sendMessage(any(OperationalConfig.class), any(Session.class), eq(email), any(MimeMessage.class));
    verifyNoMoreInteractions(customMailerMock);
}
Also used : Email(org.simplejavamail.api.email.Email) MimeMessage(jakarta.mail.internet.MimeMessage) CustomMailer(org.simplejavamail.api.mailer.CustomMailer) OperationalConfig(org.simplejavamail.api.mailer.config.OperationalConfig) Session(jakarta.mail.Session) Test(org.junit.Test)

Example 19 with Email

use of org.simplejavamail.api.email.Email in project simple-java-mail by bbottema.

the class MailerTest method testParser.

@Test
public void testParser() throws Exception {
    final EmailPopulatingBuilder emailPopulatingBuilderNormal = EmailHelper.createDummyEmailBuilder(true, false, false, true, false, false);
    // let's try producing and then consuming a MimeMessage ->
    // (bounce recipient is not part of the Mimemessage but the Envelope and is not received back on the MimeMessage
    emailPopulatingBuilderNormal.clearBounceTo();
    // always generated when producing mime message
    emailPopulatingBuilderNormal.fixingSentDate(new GregorianCalendar(2011, APRIL, 1, 3, 51).getTime());
    final Email emailNormal = emailPopulatingBuilderNormal.buildEmail();
    final MimeMessage mimeMessage = EmailConverter.emailToMimeMessage(emailNormal);
    final Email emailFromMimeMessage = EmailConverter.mimeMessageToEmail(mimeMessage);
    TestDataHelper.fixDresscodeAttachment(emailFromMimeMessage);
    assertThat(emailFromMimeMessage).isEqualTo(emailNormal);
}
Also used : Email(org.simplejavamail.api.email.Email) MimeMessage(jakarta.mail.internet.MimeMessage) EmailPopulatingBuilder(org.simplejavamail.api.email.EmailPopulatingBuilder) GregorianCalendar(java.util.GregorianCalendar) Test(org.junit.Test)

Example 20 with Email

use of org.simplejavamail.api.email.Email in project simple-java-mail by bbottema.

the class EmailPopulatingBuilderImpl1Test method testEmbeddingImagesWithDynamicDataSourceResolution_absoluteFilePathNestedUnderBasedir_AllowFlagTrue.

@Test
public void testEmbeddingImagesWithDynamicDataSourceResolution_absoluteFilePathNestedUnderBasedir_AllowFlagTrue() throws IOException {
    final Email email = builder.withEmbeddedImageAutoResolutionForFiles(true).withEmbeddedImageAutoResolutionForClassPathResources(true).withEmbeddedImageAutoResolutionForURLs(true).withEmbeddedImageBaseDir(RESOURCES_PATH).allowingEmbeddedImageOutsideBaseDir(true).withHTMLText("<img src=\"cid:cid_name\"/>").appendTextHTML("<img src=\"" + RESOURCES_PATH + "/pkcs12/about all this.txt\"/>").buildEmail();
    verifyEmbeddedImage(email, "to generate CA cert, private key and and S/MIME format");
}
Also used : Email(org.simplejavamail.api.email.Email) Test(org.junit.Test)

Aggregations

Email (org.simplejavamail.api.email.Email)121 Test (org.junit.Test)101 Recipient (org.simplejavamail.api.email.Recipient)31 File (java.io.File)26 EmailPopulatingBuilder (org.simplejavamail.api.email.EmailPopulatingBuilder)15 MimeMessage (jakarta.mail.internet.MimeMessage)10 EmailConverter.mimeMessageToEmail (org.simplejavamail.converter.EmailConverter.mimeMessageToEmail)10 InternalEmailPopulatingBuilder (org.simplejavamail.email.internal.InternalEmailPopulatingBuilder)7 URL (java.net.URL)6 AttachmentResource (org.simplejavamail.api.email.AttachmentResource)6 ByteArrayDataSource (jakarta.mail.util.ByteArrayDataSource)5 InternetAddress (jakarta.mail.internet.InternetAddress)4 Date (java.util.Date)4 SpEmail (org.apache.streampipes.model.mail.SpEmail)4 ByteArrayInputStream (java.io.ByteArrayInputStream)3 GregorianCalendar (java.util.GregorianCalendar)3 HashedMap (org.apache.commons.collections4.map.HashedMap)3 NotNull (org.jetbrains.annotations.NotNull)3 MimeMessageAndEnvelope (testutil.testrules.MimeMessageAndEnvelope)3 IOException (java.io.IOException)2