Improve MIME & SMTP compliance on outbound messages
* Write MIME-Version: 1.0 in all outbound messages, not just those with multiparts. This is required by RFC 2045. * Unit tests Bug: 1678296 Change-Id: Icf37d93b8b0150f490791792499865a60744adea
This commit is contained in:
parent
59cf1d05c1
commit
6bcccf6284
|
@ -147,6 +147,7 @@ public class Rfc822Output {
|
|||
writeAddressHeader(writer, "Bcc", message.mBcc);
|
||||
}
|
||||
writeAddressHeader(writer, "Reply-To", message.mReplyTo);
|
||||
writeHeader(writer, "MIME-Version", "1.0");
|
||||
|
||||
// Analyze message and determine if we have multiparts
|
||||
String text = buildBodyText(context, message, appendQuotedText);
|
||||
|
@ -170,7 +171,6 @@ public class Rfc822Output {
|
|||
}
|
||||
} else {
|
||||
// continue with multipart headers, then into multipart body
|
||||
writeHeader(writer, "MIME-Version", "1.0");
|
||||
multipartBoundary = "--_com.android.email_" + System.nanoTime();
|
||||
|
||||
// Move to the first attachment; this must succeed because multipart is true
|
||||
|
|
|
@ -151,6 +151,7 @@ public class Rfc822OutputTests extends ProviderTestCase2<EmailProvider> {
|
|||
new org.apache.james.mime4j.message.Message(messageInputStream);
|
||||
|
||||
// Make sure its structure is correct
|
||||
checkMimeVersion(mimeMessage);
|
||||
assertFalse(mimeMessage.isMultipart());
|
||||
assertEquals("text/plain", mimeMessage.getMimeType());
|
||||
}
|
||||
|
@ -184,6 +185,7 @@ public class Rfc822OutputTests extends ProviderTestCase2<EmailProvider> {
|
|||
new org.apache.james.mime4j.message.Message(messageInputStream);
|
||||
|
||||
// Make sure its structure is correct
|
||||
checkMimeVersion(mimeMessage);
|
||||
assertTrue(mimeMessage.isMultipart());
|
||||
Header header = mimeMessage.getHeader();
|
||||
Field contentType = header.getField("content-type");
|
||||
|
@ -226,6 +228,7 @@ public class Rfc822OutputTests extends ProviderTestCase2<EmailProvider> {
|
|||
new org.apache.james.mime4j.message.Message(messageInputStream);
|
||||
|
||||
// Make sure its structure is correct
|
||||
checkMimeVersion(mimeMessage);
|
||||
assertTrue(mimeMessage.isMultipart());
|
||||
Header header = mimeMessage.getHeader();
|
||||
Field contentType = header.getField("content-type");
|
||||
|
@ -240,4 +243,13 @@ public class Rfc822OutputTests extends ProviderTestCase2<EmailProvider> {
|
|||
header = part.getHeader();
|
||||
assertNotNull(header.getField("content-disposition"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Confirm that the constructed message includes "MIME-VERSION: 1.0"
|
||||
*/
|
||||
private void checkMimeVersion(org.apache.james.mime4j.message.Message mimeMessage) {
|
||||
Header header = mimeMessage.getHeader();
|
||||
Field contentType = header.getField("MIME-VERSION");
|
||||
assertTrue(contentType.getBody().equals("1.0"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -208,7 +208,6 @@ public class SmtpSenderUnitTests extends ProviderTestCase2<EmailProvider> {
|
|||
attachment.save(mProviderContext);
|
||||
|
||||
expectSimpleMessage(mockTransport);
|
||||
mockTransport.expect("MIME-Version: 1.0");
|
||||
mockTransport.expect("Content-Type: multipart/mixed; boundary=\".*");
|
||||
mockTransport.expect("");
|
||||
mockTransport.expect("----.*");
|
||||
|
@ -239,7 +238,6 @@ public class SmtpSenderUnitTests extends ProviderTestCase2<EmailProvider> {
|
|||
attachment.save(mProviderContext);
|
||||
|
||||
expectSimpleMessage(mockTransport);
|
||||
mockTransport.expect("MIME-Version: 1.0");
|
||||
mockTransport.expect("Content-Type: multipart/mixed; boundary=\".*");
|
||||
mockTransport.expect("");
|
||||
mockTransport.expect("----.*");
|
||||
|
@ -274,7 +272,6 @@ public class SmtpSenderUnitTests extends ProviderTestCase2<EmailProvider> {
|
|||
attachment2.save(mProviderContext);
|
||||
|
||||
expectSimpleMessage(mockTransport);
|
||||
mockTransport.expect("MIME-Version: 1.0");
|
||||
mockTransport.expect("Content-Type: multipart/mixed; boundary=\".*");
|
||||
mockTransport.expect("");
|
||||
mockTransport.expect("----.*");
|
||||
|
@ -313,7 +310,6 @@ public class SmtpSenderUnitTests extends ProviderTestCase2<EmailProvider> {
|
|||
|
||||
// prepare for the message traffic we'll see
|
||||
expectSimpleMessage(mockTransport);
|
||||
mockTransport.expect("MIME-Version: 1.0");
|
||||
mockTransport.expect("Content-Type: multipart/mixed; boundary=\".*");
|
||||
mockTransport.expect("");
|
||||
mockTransport.expect("----.*");
|
||||
|
@ -356,6 +352,7 @@ public class SmtpSenderUnitTests extends ProviderTestCase2<EmailProvider> {
|
|||
mockTransport.expect("Message-ID: .*");
|
||||
mockTransport.expect("From: Jones@Registry.Org");
|
||||
mockTransport.expect("To: Smith@Registry.Org");
|
||||
mockTransport.expect("MIME-Version: 1.0");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue