James Moger
2013-03-29 ffe9bd0ea959cf768983ff1a3d2de897390016d7
Fixed UTF-8 encoding in email notifications (issue-218)
4 files modified
71 ■■■■ changed files
releases.moxie 4 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/GitBlit.java 49 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/MailExecutor.java 13 ●●●●● patch | view | raw | blame | history
src/test/java/com/gitblit/tests/MailTest.java 5 ●●●●● patch | view | raw | blame | history
releases.moxie
@@ -16,6 +16,7 @@
     - Do not queue emails with no recipients (issue 201)
     - Disable view and blame links for deleted blobs (issue 216)
     - Fixed 1.2.x regression with individually symlinked repositories (issue 217)
     - Fixed UTF-8 encoding errors in email notifications (issue 218)
     - Fixed NPE in 1.2.1 Federation Client (issue 219)
     - Fixed extracting Groovy scripts on Express installs (issue 220)
     - Ensure Redmine url is properly formatted (issue 223)
@@ -53,6 +54,9 @@
    - Yukihiko Sawanobori
    - github/akquinet
    - github/dapengme
    dependencyChanges:
    - JGit 2.3.1.201302201838-r
}
#
src/main/java/com/gitblit/GitBlit.java
@@ -54,6 +54,8 @@
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 @@
        }
        // 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 @@
     * @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 @@
            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 @@
            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) {
src/main/java/com/gitblit/MailExecutor.java
@@ -110,19 +110,6 @@
        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.
src/test/java/com/gitblit/tests/MailTest.java
@@ -22,6 +22,7 @@
import org.junit.Test;
import com.gitblit.FileSettings;
import com.gitblit.Keys;
import com.gitblit.MailExecutor;
public class MailTest {
@@ -30,9 +31,9 @@
    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();