mirror of
https://github.com/apache/nifi.git
synced 2025-02-09 03:25:04 +00:00
NIFI-5317 - support non-ASCII X-Mailer PutEmail header
Signed-off-by: Pierre Villard <pierre.villard.fr@gmail.com> This closes #2800.
This commit is contained in:
parent
97f71fd6c7
commit
021ee6faf2
@ -320,6 +320,15 @@ public class PutEmail extends AbstractProcessor {
|
||||
this.attributeNamePattern = attributeNameRegex == null ? null : Pattern.compile(attributeNameRegex);
|
||||
}
|
||||
|
||||
private void setMessageHeader(final String header, final String value, final Message message) throws MessagingException {
|
||||
final ComponentLog logger = getLogger();
|
||||
try {
|
||||
message.setHeader(header, MimeUtility.encodeText(value));
|
||||
} catch (UnsupportedEncodingException e){
|
||||
logger.warn("Unable to add header {} with value {} due to encoding exception", new Object[]{header, value});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTrigger(final ProcessContext context, final ProcessSession session) {
|
||||
final FlowFile flowFile = session.get();
|
||||
@ -343,15 +352,11 @@ public class PutEmail extends AbstractProcessor {
|
||||
if (attributeNamePattern != null) {
|
||||
for (final Map.Entry<String, String> entry : flowFile.getAttributes().entrySet()) {
|
||||
if (attributeNamePattern.matcher(entry.getKey()).matches()) {
|
||||
try {
|
||||
message.setHeader(entry.getKey(), MimeUtility.encodeText(entry.getValue()));
|
||||
} catch (UnsupportedEncodingException e){
|
||||
logger.warn("Unable to add header value {} due to encoding exception", new Object[]{entry.getValue()});
|
||||
}
|
||||
this.setMessageHeader(entry.getKey(), entry.getValue(), message);
|
||||
}
|
||||
}
|
||||
}
|
||||
message.setHeader("X-Mailer", context.getProperty(HEADER_XMAILER).evaluateAttributeExpressions(flowFile).getValue());
|
||||
this.setMessageHeader("X-Mailer", context.getProperty(HEADER_XMAILER).evaluateAttributeExpressions(flowFile).getValue(), message);
|
||||
message.setSubject(context.getProperty(SUBJECT).evaluateAttributeExpressions(flowFile).getValue());
|
||||
|
||||
String messageText = getMessage(flowFile, context, session);
|
||||
|
@ -137,7 +137,7 @@ public class TestPutEmail {
|
||||
public void testOutgoingMessageWithOptionalProperties() throws Exception {
|
||||
// verifies that optional attributes are set on the outgoing Message correctly
|
||||
runner.setProperty(PutEmail.SMTP_HOSTNAME, "smtp-host");
|
||||
runner.setProperty(PutEmail.HEADER_XMAILER, "TestingNiFi");
|
||||
runner.setProperty(PutEmail.HEADER_XMAILER, "TestingNíFiNonASCII");
|
||||
runner.setProperty(PutEmail.FROM, "${from}");
|
||||
runner.setProperty(PutEmail.MESSAGE, "${message}");
|
||||
runner.setProperty(PutEmail.TO, "${to}");
|
||||
@ -164,7 +164,7 @@ public class TestPutEmail {
|
||||
assertEquals("Expected a single message to be sent", 1, processor.getMessages().size());
|
||||
Message message = processor.getMessages().get(0);
|
||||
assertEquals("\"test@apache.org\" <NiFi>", message.getFrom()[0].toString());
|
||||
assertEquals("X-Mailer Header", "TestingNiFi", message.getHeader("X-Mailer")[0]);
|
||||
assertEquals("X-Mailer Header", "TestingNíFiNonASCII", MimeUtility.decodeText(message.getHeader("X-Mailer")[0]));
|
||||
assertEquals("the message body", message.getContent());
|
||||
assertEquals(1, message.getRecipients(RecipientType.TO).length);
|
||||
assertEquals("to@apache.org", message.getRecipients(RecipientType.TO)[0].toString());
|
||||
|
Loading…
x
Reference in New Issue
Block a user