- From: Mercurial notifier <nobody@w3.org>
- Date: Fri, 25 Feb 2011 16:08:10 +0000
- To: Unicorn Updates <www-validator-cvs@w3.org>
changeset: 1624:e2851c6faf30
parent: 1622:d6c8490cbe6c
user: Thomas Gambet <tgambet@w3.org>
date: Thu Feb 24 17:05:55 2011 -0500
files: src/org/w3c/unicorn/action/LanguageAction.java src/org/w3c/unicorn/output/MailOutputModule.java src/org/w3c/unicorn/util/Mail.java
description:
~ refactored email actions in Mail class and fixed a charset issue when results are sent by emails
diff -r d6c8490cbe6c -r e2851c6faf30 src/org/w3c/unicorn/action/LanguageAction.java
--- a/src/org/w3c/unicorn/action/LanguageAction.java Thu Feb 24 13:23:58 2011 -0500
+++ b/src/org/w3c/unicorn/action/LanguageAction.java Thu Feb 24 17:05:55 2011 -0500
@@ -325,7 +325,7 @@
Mail mailer = new Mail();
try {
- mailer.sendMail(recipients, subject, outputFormaters, contextObjects);
+ mailer.sendMail(recipients, subject, outputFormaters, contextObjects, false);
} catch (UnicornException e) {
logger.error(e.getMessage(), e);
}
diff -r d6c8490cbe6c -r e2851c6faf30 src/org/w3c/unicorn/output/MailOutputModule.java
--- a/src/org/w3c/unicorn/output/MailOutputModule.java Thu Feb 24 13:23:58 2011 -0500
+++ b/src/org/w3c/unicorn/output/MailOutputModule.java Thu Feb 24 17:05:55 2011 -0500
@@ -3,11 +3,6 @@
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.unicorn.output;
-import java.io.ByteArrayOutputStream;
-import java.io.CharArrayWriter;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -15,17 +10,12 @@
import java.util.Locale;
import java.util.Map;
import java.util.ArrayList;
-import java.util.Properties;
import org.w3c.unicorn.util.Message;
-import javax.mail.*;
-import javax.mail.internet.*;
import org.w3c.unicorn.UnicornCall;
import org.w3c.unicorn.exceptions.UnicornException;
+import org.w3c.unicorn.util.Mail;
import org.w3c.unicorn.util.Property;
-import org.w3c.unicorn.util.UnicornAuthenticator;
-
-import javax.mail.internet.MimeBodyPart;
/**
* This module allows to send the response by mail.
@@ -87,82 +77,30 @@
return;
if (mailOutputFormaters == null && mailOutputFormaters.get(0) == null)
return;
+
+ ArrayList<Message> messages = ((ArrayList<Message>) mapOfStringObject.get("messages"));
+ SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss (Z)", new Locale(outputParameters.get("lang")));
+ messages.add(new Message(Message.INFO, "$message_mail_date", null, dateFormat.format(new Date())));
+
+ mapOfStringObject.put("baseUri", Property.get("UNICORN_URL"));
+
+ UnicornCall uniCall = (UnicornCall) mapOfStringObject.get("unicorncall");
+ boolean passed = uniCall.isPassed();
+
+ String subject = "[Unicorn] ";
+ if (passed)
+ subject += "SUCCEEDED: ";
+ else
+ subject += "FAILED: ";
+ subject += "Task \"" + uniCall.getTask().getLongName(outputParameters.get("lang")) + "\" for \"" + uniCall.getDocumentName() + "\"";
+
+ Mail sender = new Mail();
try {
- ArrayList<Message> messages = ((ArrayList<Message>) mapOfStringObject.get("messages"));
- SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss (Z)", new Locale(outputParameters.get("lang")));
-
- messages.add(new Message(Message.INFO, "$message_mail_date", null, dateFormat.format(new Date())));
-
- mapOfStringObject.put("baseUri", Property.get("UNICORN_URL"));
-
- Properties mailProps = Property.getProps("mail.properties");
- Authenticator auth = new UnicornAuthenticator(mailProps.getProperty("unicorn.mail.username"), mailProps.getProperty("unicorn.mail.password"));
- Session session = Session.getDefaultInstance(mailProps, auth);
-
- boolean debug = false;
- if ("true".equals(mailProps.getProperty("unicorn.mail.debug")))
- debug = true;
-
- session.setDebug(debug);
-
- UnicornCall uniCall = (UnicornCall) mapOfStringObject.get("unicorncall");
- boolean passed = uniCall.isPassed();
-
- String subject = "[Unicorn] ";
- if (passed)
- subject += "SUCCEEDED: ";
- else
- subject += "FAILED: ";
- subject += "Task \"" + uniCall.getTask().getLongName(outputParameters.get("lang")) + "\" for \"" + uniCall.getDocumentName() + "\"";
-
- javax.mail.Message msg = new MimeMessage(session);
- InternetAddress addressFrom = new InternetAddress(mailProps.getProperty("unicorn.mail.from"), "Unicorn");
- msg.setFrom(addressFrom);
- msg.setRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(recipient));
- msg.setSubject(subject);
-
- if (mailOutputFormaters.size() > 1) {
- // New multipart message
- Multipart mp = new MimeMultipart("alternative");
- for (OutputFormater outputFormater : mailOutputFormaters) {
- MimeBodyPart bodyPart = new MimeBodyPart();
-
- //CharArrayWriter writer = new CharArrayWriter();
- ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
- OutputStreamWriter outputStreamWriter = new OutputStreamWriter(byteArrayOutputStream, "UTF-8");
-
- outputFormater.produceOutput(mapOfStringObject, outputStreamWriter);
- outputStreamWriter.close();
- byteArrayOutputStream.close();
- bodyPart.setContent(byteArrayOutputStream.toString("UTF-8"), outputFormater.getMimeType());
- bodyPart.setHeader("Content-Type", outputFormater.getMimeType() + "; charset=UTF-8");
- bodyPart.setHeader("Content-Transfer-Encoding", "8bit");
- mp.addBodyPart(bodyPart);
- }
- msg.setContent(mp);
- } else {
- CharArrayWriter writer = new CharArrayWriter();
- mailOutputFormaters.get(0).produceOutput(mapOfStringObject, writer);
- writer.close();
- msg.setContent(writer.toString(), mailOutputFormaters.get(0).getMimeType());
- }
-
- Transport.send(msg);
-
- } catch (AddressException e) {
- // TODO Auto-generated catch block
+ sender.sendMail(new String[] {recipient}, subject, mailOutputFormaters, mapOfStringObject, true);
+ } catch (UnicornException e) {
e.printStackTrace();
- } catch (MessagingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (UnsupportedEncodingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
+ }
}
public void produceError(Map<String, Object> mapOfStringObject, final Writer aWriter) {
diff -r d6c8490cbe6c -r e2851c6faf30 src/org/w3c/unicorn/util/Mail.java
--- a/src/org/w3c/unicorn/util/Mail.java Thu Feb 24 13:23:58 2011 -0500
+++ b/src/org/w3c/unicorn/util/Mail.java Thu Feb 24 17:05:55 2011 -0500
@@ -32,7 +32,7 @@
private static Log logger = LogFactory.getLog(Mail.class);
- public void sendMail(String[] recipients, String subject, List<OutputFormater> outputFormaters, Map<String, Object> contextObjects) throws UnicornException {
+ public void sendMail(String[] recipients, String subject, List<OutputFormater> outputFormaters, Map<String, Object> contextObjects, boolean alternative) throws UnicornException {
try {
Properties mailProps = Property.getProps("mail.properties");
@@ -72,7 +72,11 @@
if (outputFormaters.size() > 1) {
// New multipart message
- MimeMultipart mp = new MimeMultipart();
+ MimeMultipart mp;
+ if (alternative)
+ mp = new MimeMultipart("alternative");
+ else
+ mp = new MimeMultipart();
for (OutputFormater outputFormater : outputFormaters) {
MimeBodyPart bodyPart = new MimeBodyPart();
if (outputFormater instanceof FileOutputFormater)
@@ -90,6 +94,7 @@
}
bodyPart.setContent(byteArrayOutputStream.toString("UTF-8"), outputFormater.getMimeType() + "; charset=UTF-8");
+ bodyPart.setHeader("Content-Type", outputFormater.getMimeType() + "; charset=UTF-8");
bodyPart.setHeader("Content-Transfer-Encoding", "7bit");
mp.addBodyPart(bodyPart);
}
@@ -119,10 +124,10 @@
}
}
- public void sendMail(String[] recipients, String subject, OutputFormater outputFormater, Map<String, Object> contextObjects) throws UnicornException {
+ public void sendMail(String[] recipients, String subject, OutputFormater outputFormater, Map<String, Object> contextObjects, boolean alternative) throws UnicornException {
List<OutputFormater> outputFormaters = new ArrayList<OutputFormater>();
outputFormaters.add(outputFormater);
- sendMail(recipients, subject, outputFormaters, contextObjects);
+ sendMail(recipients, subject, outputFormaters, contextObjects, alternative);
}
}
Received on Friday, 25 February 2011 16:08:15 UTC