In the case that there are X500 addresses used in the sender and recipient headers, Aspose will postprocess them (???):
"Aspose" when {
"i use X500 addresses" should {
"pass them through to MIME verbatim" in {
val mapiMessage = new MapiMessage()
mapiMessage.setSenderEmailAddress("/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=BLABLABLA-DAVID STANCU")
mapiMessage.setSenderName("David Stancu")
val asMime = mapiMessage.toMailMessage(new MailConversionOptions())
val baos = new ByteArrayOutputStream()
asMime.save(baos)
val bais = new ByteArrayInputStream(baos.toByteArray)
val javaMailMessage = new MimeMessage(mailSession, bais)
assert(
javaMailMessage.getSender.toString ===
""""David Stancu" </O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=BLABLABLA-DAVID STANCU>"""
)
}
"pass them through verbatim if we toggle the flag?????" in {
val mapiMessage = new MapiMessage()
mapiMessage.setSenderEmailAddress("/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=BLABLABLA-DAVID STANCU")
mapiMessage.setSenderName("David Stancu")
val mco = new MailConversionOptions()
mco.setKeepOriginalEmailAddresses(true)
val asMime = mapiMessage.toMailMessage(mco)
val baos = new ByteArrayOutputStream()
asMime.save(baos)
val bais = new ByteArrayInputStream(baos.toByteArray)
val javaMailMessage = new MimeMessage(mailSession, bais)
assert(
javaMailMessage.getSender.toString ===
""""David Stancu" </O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=BLABLABLA-DAVID STANCU>"""
)
}
"maybe if i set it as a header?" in {
val mapiMessage = new MapiMessage()
mapiMessage.getHeaders.set("from", "/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=BLABLABLA-DAVID STANCU")
val mco = new MailConversionOptions()
mco.setKeepOriginalEmailAddresses(true)
val asMime = mapiMessage.toMailMessage(new MailConversionOptions())
val baos = new ByteArrayOutputStream()
asMime.save(baos)
val bais = new ByteArrayInputStream(baos.toByteArray)
val javaMailMessage = new MimeMessage(mailSession, bais)
// <> chars are from javax.mail presentation
assert(
javaMailMessage.getFrom.head.toString ===
"</O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=BLABLABLA-DAVID STANCU>"
)
}
}
In order
Test 1 and 2:
Expected :"["David Stancu" </O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=BLABLABLA-DAVID STANCU]>"
Actual :"[<"David Stancu"]>"
Test 3:
Aspose is inserting a newline in the middle of the header??? (nvm, folding is OK, but why change the value)
Here is the output MIME:
From: "/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP
/CN=RECIPIENTS/CN=BLABLABLA-DAVID STANCU"
Content-Type: text/plain
MIME-Version: 1.0
Expected :"<[/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=BLABLABLA-DAVID STANCU]>"
Actual :"<["/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP /CN=RECIPIENTS/CN=BLABLABLA-DAVID STANCU"]>"
setKeepOriginalEmailAddresses
in MailConversionOptions
appears to resolve SMTP addressess from PST metadata however it breaks the To
fields in the process. I don’t know why this is the case and I will try to get you test data.
Given the severity of this bug (and the timestamp issue), we are expecting Aspose to step up and do the right thing: give us an extension on our license such that we can consume these updates once your team has fixed them. Without this goodwill gesture we will not plan on a renewal and will excise Aspose products from our stack entirely.