From c7324372110cc726c7299d36c3b22de2cda9ead7 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 25 Apr 2016 11:41:34 +0200
Subject: [PATCH] OO-1935: add an option to fix from of the smtp envelope

---
 .../olat/core/util/_spring/utilCorecontext.xml    |  1 +
 .../core/util/mail/manager/MailManagerImpl.java   | 15 ++++++++++++++-
 src/main/resources/serviceconfig/olat.properties  |  2 ++
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/olat/core/util/_spring/utilCorecontext.xml b/src/main/java/org/olat/core/util/_spring/utilCorecontext.xml
index 304d6c9be60..53e7540a0a5 100644
--- a/src/main/java/org/olat/core/util/_spring/utilCorecontext.xml
+++ b/src/main/java/org/olat/core/util/_spring/utilCorecontext.xml
@@ -33,6 +33,7 @@
 				<entry key="smtpStarttls" value="${smtp.starttls}"/>
 				<entry key="mailFrom" value="${fromemail}"/>
 				<entry key="mailFromName" value="${fromname}"/>
+				<entry key="smtpFrom" value="${smtp.from}"/>
 				<entry key="mailReplyTo" value="${adminemail}"/>
 				<entry key="mailSupport" value="${supportemail}"/>
 				<entry key="mailQuota" value="${quotaemail}"/>
diff --git a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java
index a0d0b3b29f2..945027a5e2e 100644
--- a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java
+++ b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java
@@ -110,6 +110,8 @@ import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import com.sun.mail.smtp.SMTPMessage;
+
 /**
  * 
  * Description:<br>
@@ -1597,7 +1599,18 @@ public class MailManagerImpl implements MailManager, InitializingBean  {
 	}
 
 	@Override
-	public void sendMessage(MimeMessage msg, MailerResult result){
+	public void sendMessage(MimeMessage msg, MailerResult result) {
+		String smtpFrom = WebappHelper.getMailConfig("smtpFrom");
+		if(StringHelper.containsNonWhitespace(smtpFrom)) {
+			try {
+				SMTPMessage smtpMsg = new SMTPMessage(msg);
+				smtpMsg.setEnvelopeFrom(smtpFrom);
+				msg = smtpMsg;
+			} catch (MessagingException e) {
+				log.error("", e);
+			}
+		}
+
 		try{
 			if(Settings.isJUnitTest()) {
 				//we want not send really e-mails
diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties
index bd223ab52e8..adf39e70302 100644
--- a/src/main/resources/serviceconfig/olat.properties
+++ b/src/main/resources/serviceconfig/olat.properties
@@ -124,6 +124,8 @@ smtp.sslCheckCertificate=false
 smtp.starttls=false
 # timeout in milliseconds
 smtp.timeout=8000
+# fix from of the smtp envelope
+smtp.from=
 # system mails will be sent from this address (from local domain with valid reverse dns):
 fromemail=no-reply@your.domain
 # the plain text name of the from mail address usually displayed by the email client
-- 
GitLab