summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2013-03-29 12:11:05 -0400
committerJames Moger <james.moger@gitblit.com>2013-03-29 12:11:05 -0400
commitffe9bd0ea959cf768983ff1a3d2de897390016d7 (patch)
tree1f62ba796e0e374a9402350342dcfb0481df195f /src
parentc5d052400cd60e5b58ba7b5e1fd7706ee0676ab7 (diff)
downloadgitblit-ffe9bd0ea959cf768983ff1a3d2de897390016d7.tar.gz
gitblit-ffe9bd0ea959cf768983ff1a3d2de897390016d7.zip
Fixed UTF-8 encoding in email notifications (issue 218)
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/gitblit/GitBlit.java49
-rw-r--r--src/main/java/com/gitblit/MailExecutor.java13
-rw-r--r--src/test/java/com/gitblit/tests/MailTest.java5
3 files changed, 29 insertions, 38 deletions
diff --git a/src/main/java/com/gitblit/GitBlit.java b/src/main/java/com/gitblit/GitBlit.java
index 65dc559c..83769d36 100644
--- a/src/main/java/com/gitblit/GitBlit.java
+++ b/src/main/java/com/gitblit/GitBlit.java
@@ -54,6 +54,8 @@ import java.util.concurrent.atomic.AtomicReference;
import javax.mail.Message;
import javax.mail.MessagingException;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMultipart;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
@@ -2580,17 +2582,8 @@ public class GitBlit implements ServletContextListener {
}
// send an email, if possible
- try {
- Message message = mailExecutor.createMessageForAdministrators();
- if (message != null) {
- message.setSubject("Federation proposal from " + proposal.url);
- message.setText("Please review the proposal @ " + gitblitUrl + "/proposal/"
- + proposal.token);
- mailExecutor.queue(message);
- }
- } catch (Throwable t) {
- logger.error("Failed to notify administrators of proposal", t);
- }
+ sendMailToAdministrators("Federation proposal from " + proposal.url,
+ "Please review the proposal @ " + gitblitUrl + "/proposal/" + proposal.token);
return true;
}
@@ -2877,16 +2870,8 @@ public class GitBlit implements ServletContextListener {
* @param message
*/
public void sendMailToAdministrators(String subject, String message) {
- try {
- Message mail = mailExecutor.createMessageForAdministrators();
- if (mail != null) {
- mail.setSubject(subject);
- mail.setText(message);
- mailExecutor.queue(mail);
- }
- } catch (MessagingException e) {
- logger.error("Messaging error", e);
- }
+ List<String> toAddresses = settings.getStrings(Keys.mail.adminAddresses);
+ sendMail(subject, message, toAddresses);
}
/**
@@ -2916,7 +2901,16 @@ public class GitBlit implements ServletContextListener {
Message mail = mailExecutor.createMessage(toAddresses);
if (mail != null) {
mail.setSubject(subject);
- mail.setText(message);
+
+ MimeBodyPart messagePart = new MimeBodyPart();
+ messagePart.setText(message, "utf-8");
+ messagePart.setHeader("Content-Type", "text/plain; charset=\"utf-8\"");
+ messagePart.setHeader("Content-Transfer-Encoding", "quoted-printable");
+
+ MimeMultipart multiPart = new MimeMultipart();
+ multiPart.addBodyPart(messagePart);
+ mail.setContent(multiPart);
+
mailExecutor.queue(mail);
}
} catch (MessagingException e) {
@@ -2951,7 +2945,16 @@ public class GitBlit implements ServletContextListener {
Message mail = mailExecutor.createMessage(toAddresses);
if (mail != null) {
mail.setSubject(subject);
- mail.setContent(message, "text/html");
+
+ MimeBodyPart messagePart = new MimeBodyPart();
+ messagePart.setText(message, "utf-8");
+ messagePart.setHeader("Content-Type", "text/html; charset=\"utf-8\"");
+ messagePart.setHeader("Content-Transfer-Encoding", "quoted-printable");
+
+ MimeMultipart multiPart = new MimeMultipart();
+ multiPart.addBodyPart(messagePart);
+ mail.setContent(multiPart);
+
mailExecutor.queue(mail);
}
} catch (MessagingException e) {
diff --git a/src/main/java/com/gitblit/MailExecutor.java b/src/main/java/com/gitblit/MailExecutor.java
index 9001e836..54ff8b82 100644
--- a/src/main/java/com/gitblit/MailExecutor.java
+++ b/src/main/java/com/gitblit/MailExecutor.java
@@ -110,19 +110,6 @@ public class MailExecutor implements Runnable {
return session != null;
}
- /**
- * Creates a message for the administrators.
- *
- * @returna message
- */
- public Message createMessageForAdministrators() {
- List<String> toAddresses = settings.getStrings(Keys.mail.adminAddresses);
- if (toAddresses.size() == 0) {
- logger.warn("Can not notify administrators because no email addresses are defined!");
- return null;
- }
- return createMessage(toAddresses);
- }
/**
* Create a message.
diff --git a/src/test/java/com/gitblit/tests/MailTest.java b/src/test/java/com/gitblit/tests/MailTest.java
index 05d55a24..4feedb06 100644
--- a/src/test/java/com/gitblit/tests/MailTest.java
+++ b/src/test/java/com/gitblit/tests/MailTest.java
@@ -22,6 +22,7 @@ import javax.mail.Message;
import org.junit.Test;
import com.gitblit.FileSettings;
+import com.gitblit.Keys;
import com.gitblit.MailExecutor;
public class MailTest {
@@ -30,9 +31,9 @@ public class MailTest {
public void testSendMail() throws Exception {
FileSettings settings = new FileSettings("mailtest.properties");
MailExecutor mail = new MailExecutor(settings);
- Message message = mail.createMessageForAdministrators();
+ Message message = mail.createMessage(settings.getStrings(Keys.mail.adminAddresses));
message.setSubject("Test");
- message.setText("this is a test");
+ message.setText("Lägger till andra stycket i ny fil. UTF-8 encoded");
mail.queue(message);
mail.run();