You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2012/04/20 07:57:01 UTC
svn commit: r1328204 - in /incubator/openmeetings/trunk/singlewebapp:
WebContent/WEB-INF/ src/org/openmeetings/app/data/conference/
src/org/openmeetings/app/data/flvrecord/converter/
src/org/openmeetings/app/installation/ src/org/openmeetings/app/persi...
Author: solomax
Date: Fri Apr 20 05:57:01 2012
New Revision: 1328204
URL: http://svn.apache.org/viewvc?rev=1328204&view=rev
Log:
OPENMEETINGS-186 is fixed; code clean up.
Modified:
incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverterTask.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewReConverterTask.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverterTask.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/calendar/AppointmentReminderTyps.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/MainService.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailHandler.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailThread.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java
Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml (original)
+++ incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml Fri Apr 20 05:57:01 2012
@@ -70,12 +70,6 @@
<bean id="chatservice.service" class="org.openmeetings.app.remote.ChatService" />
<bean id="calendarservice.service" class="org.openmeetings.app.remote.CalendarService" />
<bean id="flvrecorderservice.service" class="org.openmeetings.app.remote.FLVRecorderService" />
- <bean id="openmeetings.TaskExecutor"
- class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
- <property name="corePoolSize" value="5" />
- <property name="maxPoolSize" value="10" />
- <property name="queueCapacity" value="25" />
- </bean>
<bean id="openmeetings.FlvRecorderConverterTask"
class="org.openmeetings.app.data.flvrecord.converter.FlvRecorderConverterTask" />
<bean id="openmeetings.FlvInterviewConverterTask"
@@ -233,20 +227,15 @@
<bean id="resetPasswordTemplate" class="org.openmeetings.app.templates.ResetPasswordTemplate" />
<!-- Thread Executor -->
- <bean id="mailTaskExecutor"
+ <bean id="taskExecutor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5" />
<property name="maxPoolSize" value="10" />
<property name="queueCapacity" value="25" />
</bean>
- <bean id="mailThread" class="org.openmeetings.utils.mail.MailThread">
- <constructor-arg ref="mailTaskExecutor" />
- </bean>
-
- <bean id="mailiCalThread" class="org.openmeetings.utils.mail.MailiCalThread">
- <constructor-arg ref="mailTaskExecutor" />
- </bean>
+ <bean id="mailThread" class="org.openmeetings.utils.mail.MailThread"/>
+ <bean id="mailiCalThread" class="org.openmeetings.utils.mail.MailiCalThread"/>
<!-- Axis2 Service Proxy's -->
<bean id="userWebService" class="org.openmeetings.axis.services.UserWebService" />
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java Fri Apr 20 05:57:01 2012
@@ -187,7 +187,7 @@ public class Invitationmanagement {
if (sendMail) {
this.sendInvitionLink(username, message, baseurl,
- email, subject, invitation.getHash(),
+ email, us.getAdresses().getEmail(), subject, invitation.getHash(),
validFrom, validTo, language_id);
}
@@ -602,13 +602,14 @@ public class Invitationmanagement {
* @param message
* @param baseurl
* @param email
+ * @param replyTo
* @param subject
* @param invitationsHash
* @param dStart
* @param dEnd
* @param language_id If it is >0 then "&language=" is added to the link
*/
- private String sendInvitionLink(String username, String message,
+ private String sendInvitionLink(String replyTo, String username, String message,
String baseurl, String email, String subject,
String invitationsHash, Date dStart, Date dEnd, Long language_id) {
try {
@@ -632,7 +633,7 @@ public class Invitationmanagement {
System.out.println(template);
- return mailHandler.sendMail(email, subject, template);
+ return mailHandler.sendMail(email, replyTo, subject, template);
} catch (Exception err) {
log.error("sendInvitationLink", err);
@@ -699,15 +700,17 @@ public class Invitationmanagement {
*
* @param email
* @param point
- * @param cancelling_person
+ * @param replyTo
+ * @param subject
+ * @param mesage
* @return
*/
// --------------------------------------------------------------------------------------------------------------
private String sendInvitationUpdateMail(String email, Appointment point,
- String cancelling_person, String subject, String message) {
+ String replyTo, String subject, String message) {
log.debug("sendInvitationUpdateMail");
try {
- return mailHandler.sendMail(email, subject, message);
+ return mailHandler.sendMail(email, replyTo, subject, message);
} catch (Exception e) {
log.error("sendInvitationUpdateMail : " + e.getMessage());
}
@@ -765,7 +768,7 @@ public class Invitationmanagement {
log.debug(handler.getICalDataAsString());
- mailiCalThread.doSend(email, subject, handler.getIcalAsByteArray(),
+ mailiCalThread.doSend(email, user.getAdresses().getEmail(), subject, handler.getIcalAsByteArray(),
message);
return null;
@@ -817,7 +820,7 @@ public class Invitationmanagement {
log.debug(handler.getICalDataAsString());
- mailiCalThread.doSend(email, subject, handler.getIcalAsByteArray(),
+ mailiCalThread.doSend(email, user.getAdresses().getEmail(), subject, handler.getIcalAsByteArray(),
message);
return null;
@@ -908,7 +911,7 @@ public class Invitationmanagement {
log.debug(handler.getICalDataAsString());
- mailiCalThread.doSend(email, subject, handler.getIcalAsByteArray(),
+ mailiCalThread.doSend(email, user.getAdresses().getEmail(), subject, handler.getIcalAsByteArray(),
template);
return "success";
@@ -936,7 +939,7 @@ public class Invitationmanagement {
*/
public String sendInvitionLink(Long user_level, String username,
String message, String domain, String room, String roomtype,
- String baseurl, String email, String subject, Long room_id,
+ String baseurl, String email, String replyTo, String subject, Long room_id,
Date starttime, Date endtime) {
try {
if (authLevelManagement.checkUserLevel(user_level)) {
@@ -955,7 +958,7 @@ public class Invitationmanagement {
invitation_link, default_lang_id, starttime,
endtime);
- return mailHandler.sendMail(email, subject, template);
+ return mailHandler.sendMail(email, replyTo, subject, template);
}
} catch (Exception err) {
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverterTask.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverterTask.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverterTask.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverterTask.java Fri Apr 20 05:57:01 2012
@@ -22,14 +22,12 @@ import org.openmeetings.app.Openmeetings
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.task.TaskExecutor;
public class FlvInterviewConverterTask {
private static final Logger log = Red5LoggerFactory.getLogger(FlvInterviewConverterTask.class, OpenmeetingsVariables.webAppRootKey);
@Autowired
- @Qualifier("openmeetings.TaskExecutor")
private TaskExecutor taskExecutor;
@Autowired
private FlvInterviewConverter flvInterviewConverter;
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewReConverterTask.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewReConverterTask.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewReConverterTask.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewReConverterTask.java Fri Apr 20 05:57:01 2012
@@ -22,7 +22,6 @@ import org.openmeetings.app.Openmeetings
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.task.TaskExecutor;
public class FlvInterviewReConverterTask {
@@ -31,7 +30,6 @@ public class FlvInterviewReConverterTask
OpenmeetingsVariables.webAppRootKey);
@Autowired
- @Qualifier("openmeetings.TaskExecutor")
private TaskExecutor taskExecutor;
@Autowired
private FlvInterviewConverter flvInterviewConverter;
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverterTask.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverterTask.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverterTask.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverterTask.java Fri Apr 20 05:57:01 2012
@@ -22,7 +22,6 @@ import org.openmeetings.app.Openmeetings
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.task.TaskExecutor;
public class FlvRecorderConverterTask {
@@ -30,7 +29,6 @@ public class FlvRecorderConverterTask {
private static final Logger log = Red5LoggerFactory.getLogger(FlvRecorderConverterTask.class, OpenmeetingsVariables.webAppRootKey);
@Autowired
- @Qualifier("openmeetings.TaskExecutor")
private TaskExecutor taskExecutor;
@Autowired
private FlvRecorderConverter flvRecorderConverter;
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java Fri Apr 20 05:57:01 2012
@@ -546,6 +546,14 @@ public class ImportInitvalues {
null,
"Ldap domain selected by default in the login screen");
+ // set inviter's email address as ReplyTo in email invitations
+ cfgManagement.addConfByKey(
+ 3,
+ "inviter.email.as.replyto",
+ "1",
+ null,
+ "Set inviter's email address as ReplyTo in email invitations (1 == set, 0 == NOT set)");
+
log.debug("Configuration ADDED");
}
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/calendar/AppointmentReminderTyps.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/calendar/AppointmentReminderTyps.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/calendar/AppointmentReminderTyps.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/calendar/AppointmentReminderTyps.java Fri Apr 20 05:57:01 2012
@@ -21,20 +21,18 @@ package org.openmeetings.app.persistence
import java.io.Serializable;
import java.util.Date;
-import org.openmeetings.app.persistence.beans.user.Users;
-
-
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
-import javax.persistence.Lob;
-import javax.persistence.ManyToOne;
import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
import javax.persistence.Table;
+import org.openmeetings.app.persistence.beans.user.Users;
+
@Entity
@Table(name = "appointmentremindertyps")
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/MainService.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/MainService.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/MainService.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/MainService.java Fri Apr 20 05:57:01 2012
@@ -885,7 +885,7 @@ public class MainService implements IPen
Long user_level = userManagement.getUserLevelByID(users_id);
return invitationManagement.sendInvitionLink(user_level,
username, message, domain, room, roomtype, baseurl, email,
- subject, room_id, null, null);
+ usersDao.getUser(users_id).getAdresses().getEmail(), subject, room_id, null, null);
}
/**
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailHandler.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailHandler.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailHandler.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailHandler.java Fri Apr 20 05:57:01 2012
@@ -19,7 +19,6 @@
package org.openmeetings.utils.mail;
import org.openmeetings.app.OpenmeetingsVariables;
-import org.openmeetings.app.data.basic.Configurationmanagement;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -30,11 +29,9 @@ import org.springframework.beans.factory
*
*/
public class MailHandler {
-
private static final Logger log = Red5LoggerFactory.getLogger(
MailHandler.class, OpenmeetingsVariables.webAppRootKey);
- @Autowired
- private Configurationmanagement cfgManagement;
+
@Autowired
private MailThread mailThread;
@@ -44,32 +41,24 @@ public class MailHandler {
* @param toEmail
* @param subj
* @param message
- * @return
+ * @return "success" or "Error: err description"
*/
public String sendMail(String toEmail, String subj, String message) {
+ return sendMail(toEmail, null, subj, message);
+ }
+
+ /**
+ * send mail to address
+ *
+ * @param toEmail
+ * @param replyTo
+ * @param subj
+ * @param message
+ * @return "success" or "Error: err description"
+ */
+ public String sendMail(String toEmail, String replyTo, String subj, String message) {
try {
-
- // String smtpServer="smtp.xmlcrm.org";
- String smtpServer = cfgManagement.getConfKey(3, "smtp_server")
- .getConf_value();
- String smtpPort = cfgManagement.getConfKey(3, "smtp_port")
- .getConf_value();
- String to = toEmail;
- // String from = "openmeetings@xmlcrm.org";
- String from = cfgManagement.getConfKey(3, "system_email_addr")
- .getConf_value();
- String subject = subj;
- String body = message;
-
- String emailUsername = cfgManagement
- .getConfKey(3, "email_username").getConf_value();
- String emailUserpass = cfgManagement
- .getConfKey(3, "email_userpass").getConf_value();
-
- // return send(smtpServer, smtpPort, to, from, subject, body);
-
- mailThread.doSend(smtpServer, smtpPort, to, from, subject, body,
- emailUsername, emailUserpass);
+ mailThread.doSend(toEmail, replyTo, subj, message);
return "success";
@@ -78,27 +67,4 @@ public class MailHandler {
return "Error: " + ex;
}
}
-
- /**
- * @author o.becherer
- * @param recipients
- * (List of valid mail adresses)
- * @param subject
- * mailSubject
- * @param iCalMimeBody
- * byte[] containing Icaldata Sending Ical Invitation
- */
- // ---------------------------------------------------------------------------------------------
- // public static void sendIcalMessage(String recipients, String subject,
- // byte[] iCalMimeBody, String htmlBody) throws Exception {
- // log.debug("sendIcalMessage");
- //
- // MailiCalThread mailiCalThread = new MailiCalThread(recipients, subject,
- // iCalMimeBody, htmlBody);
- //
- // mailiCalThread.start();
- //
- // }
- // ---------------------------------------------------------------------------------------------
-
}
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailThread.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailThread.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailThread.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailThread.java Fri Apr 20 05:57:01 2012
@@ -23,14 +23,15 @@ import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.Message;
+import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
+import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.openmeetings.app.OpenmeetingsVariables;
import org.openmeetings.app.data.basic.Configurationmanagement;
-import org.openmeetings.app.persistence.beans.basic.Configuration;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -42,51 +43,92 @@ public class MailThread {
MailHandler.class, OpenmeetingsVariables.webAppRootKey);
@Autowired
- private Configurationmanagement cfgManagement;
-
- private final TaskExecutor taskExecutor;
+ protected Configurationmanagement cfgManagement;
+ @Autowired
+ protected TaskExecutor taskExecutor;
- public MailThread(TaskExecutor taskExecutor) {
- this.taskExecutor = taskExecutor;
+ public void doSend(String to, String subject, String body) {
+ doSend(to, null, subject, body);
}
- public void doSend(String smtpServer, String smtpPort, String to,
- String from, String subject, String body, String emailUsername,
- String emailUserpass) {
-
- this.taskExecutor.execute(new MailSenderTask(smtpServer, smtpPort, to,
- from, subject, body, emailUsername, emailUserpass));
-
+ public void doSend(String to, String replyTo, String subject, String body) {
+ taskExecutor.execute(new MailSenderTask(to, replyTo, subject, body));
}
- private class MailSenderTask implements Runnable {
+ protected class MailSenderTask implements Runnable {
- private final String smtpServer;
- private final String smtpPort;
- private final String to;
- private final String from;
+ private final String recipients;
+ private final String replyTo;
private final String subject;
private final String body;
- private final String emailUsername;
- private final String emailUserpass;
- public MailSenderTask(String smtpServer, String smtpPort, String to,
- String from, String subject, String body, String emailUsername,
- String emailUserpass) {
- this.smtpServer = smtpServer;
- this.smtpPort = smtpPort;
- this.to = to;
- this.from = from;
+ public MailSenderTask(String recipients, String replyTo, String subject, String body) {
+ this.recipients = recipients;
+ this.replyTo = replyTo;
this.subject = subject;
this.body = body;
- this.emailUsername = emailUsername;
- this.emailUserpass = emailUserpass;
}
public void run() {
this.send();
}
+ protected MimeMessage getMessage() throws AddressException, MessagingException {
+ log.debug("getMessage");
+
+ // Evaluating Configuration Data
+ String smtpServer = cfgManagement.getConfValue("smtp_server", String.class, null);
+ String smtpPort = cfgManagement.getConfValue("smtp_port", String.class, "25");
+ String from = cfgManagement.getConfValue("system_email_addr", String.class, null);
+ String mailAuthUser = cfgManagement.getConfValue("email_username", String.class, null);
+ String mailAuthPass = cfgManagement.getConfValue("email_userpass", String.class, null);
+
+ Properties props = System.getProperties();
+
+ props.put("mail.smtp.host", smtpServer);
+ props.put("mail.smtp.port", smtpPort);
+
+ if ("1".equals(cfgManagement.getConfValue("mail.smtp.starttls.enable", String.class, "0"))) {
+ props.put("mail.smtp.starttls.enable", "true");
+ }
+
+ // Check for Authentification
+ Session session = null;
+ if (mailAuthUser != null && mailAuthUser.length() > 0
+ && mailAuthPass != null && mailAuthPass.length() > 0) {
+ // use SMTP Authentication
+ props.put("mail.smtp.auth", "true");
+ session = Session.getDefaultInstance(props,
+ new SmtpAuthenticator(mailAuthUser, mailAuthPass));
+ } else {
+ // not use SMTP Authentication
+ session = Session.getDefaultInstance(props, null);
+ }
+
+ // Building MimeMessage
+ MimeMessage msg = new MimeMessage(session);
+ msg.setSubject(subject);
+ msg.setFrom(new InternetAddress(from));
+ if (replyTo != null && "1".equals(cfgManagement.getConfValue("inviter.email.as.replyto", String.class, "1"))) {
+ msg.setReplyTo(new InternetAddress[]{new InternetAddress(replyTo)});
+ }
+ msg.addRecipients(Message.RecipientType.TO,
+ InternetAddress.parse(recipients, false));
+
+ return msg;
+ }
+
+ protected MimeMessage setMessageBody(MimeMessage msg) throws Exception {
+ // -- Set the subject and body text --
+ msg.setDataHandler(new DataHandler(new ByteArrayDataSource(
+ body, "text/html; charset=\"utf-8\"")));
+
+ // -- Set some other header information --
+ msg.setHeader("X-Mailer", "XML-Mail");
+ msg.setSentDate(new Date());
+
+ return msg;
+ }
/**
* Sending a mail with given values.<br>
* If the parameter "emailUsername" and "emailUserpass" is exist, use
@@ -103,65 +145,12 @@ public class MailThread {
*/
public String send() {
try {
-
log.debug("Message sending in progress");
- log.debug(" From: " + from);
- log.debug(" To: " + to);
+ log.debug(" To: " + recipients);
log.debug(" Subject: " + subject);
- Properties props = System.getProperties();
-
- // -- Attaching to default Session, or we could start a new one
- // --
- // smtpPort 25 or 587
- props.put("mail.smtp.host", smtpServer);
- props.put("mail.smtp.port", smtpPort);
-
- Configuration conf = cfgManagement.getConfKey(3,
- "mail.smtp.starttls.enable");
- if (conf != null) {
- if (conf.getConf_value().equals("1")) {
- props.put("mail.smtp.starttls.enable", "true");
- }
- }
-
- Session session = null;
- if (emailUsername != null && emailUsername.length() > 0
- && emailUserpass != null && emailUserpass.length() > 0) {
- // use SMTP Authentication
- props.put("mail.smtp.auth", "true");
- session = Session
- .getDefaultInstance(props, new SmtpAuthenticator(
- emailUsername, emailUserpass));
- } else {
- // not use SMTP Authentication
- session = Session.getDefaultInstance(props, null);
- }
-
- // -- Create a new message --
- Message msg = new MimeMessage(session);
-
- // -- Set the FROM and TO fields --
- msg.setFrom(new InternetAddress(from));
- msg.setRecipients(Message.RecipientType.TO,
- InternetAddress.parse(to, false));
-
- // -- We could include CC recipients too --
- // if (cc != null)
- // msg.setRecipients(Message.RecipientType.CC
- // ,InternetAddress.parse(cc, false));
-
- // -- Set the subject and body text --
- msg.setSubject(subject);
- msg.setDataHandler(new DataHandler(new ByteArrayDataSource(
- body, "text/html; charset=\"utf-8\"")));
-
- // -- Set some other header information --
- msg.setHeader("X-Mailer", "XML-Mail");
- msg.setSentDate(new Date());
-
// -- Send the message --
- Transport.send(msg);
+ Transport.send(setMessageBody(getMessage()));
return "success";
} catch (Exception ex) {
Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java Fri Apr 20 05:57:01 2012
@@ -19,161 +19,63 @@
package org.openmeetings.utils.mail;
import java.io.ByteArrayInputStream;
-import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.BodyPart;
-import javax.mail.Message;
import javax.mail.Multipart;
-import javax.mail.Session;
-import javax.mail.Transport;
-import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
+import javax.mail.util.ByteArrayDataSource;
import org.openmeetings.app.OpenmeetingsVariables;
-import org.openmeetings.app.data.basic.Configurationmanagement;
-import org.openmeetings.app.persistence.beans.basic.Configuration;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.task.TaskExecutor;
-public class MailiCalThread extends Thread {
+public class MailiCalThread extends MailThread {
private static final Logger log = Red5LoggerFactory.getLogger(
MailiCalThread.class, OpenmeetingsVariables.webAppRootKey);
- @Autowired
- private Configurationmanagement cfgManagement;
-
- private final TaskExecutor taskExecutor;
-
- public MailiCalThread(TaskExecutor taskExecutor) {
- this.taskExecutor = taskExecutor;
- }
-
- public void doSend(String recipients, String subject, byte[] iCalMimeBody,
+ public void doSend(String recipients, String replyTo, String subject, byte[] iCalMimeBody,
String htmlBody) {
-
- this.taskExecutor.execute(new MailSenderTask(recipients, subject,
+ taskExecutor.execute(new MailSenderTask(recipients, replyTo, subject,
iCalMimeBody, htmlBody));
}
- private class MailSenderTask implements Runnable {
-
- private final String recipients;
- private final String subject;
+ protected class MailSenderTask extends MailThread.MailSenderTask {
private final byte[] iCalMimeBody;
private final String htmlBody;
- public MailSenderTask(String recipients, String subject,
+ public MailSenderTask(String recipients, String replyTo, String subject,
byte[] iCalMimeBody, String htmlBody) {
- super();
- this.recipients = recipients;
- this.subject = subject;
+ super(recipients, replyTo, subject, null);
this.iCalMimeBody = iCalMimeBody;
this.htmlBody = htmlBody;
}
- public void run() {
- try {
-
- this.sendIcalMessage();
-
- } catch (Exception err) {
- log.error("MailSenderTask ", err);
- }
- }
-
- /**
- * @author o.becherer
- * @param recipients
- * (List of valid mail adresses)
- * @param subject
- * mailSubject
- * @param iCalMimeBody
- * byte[] containing Icaldata Sending Ical Invitation
- */
- // ---------------------------------------------------------------------------------------------
- public void sendIcalMessage() throws Exception {
- log.debug("sendIcalMessage");
-
- // Evaluating Configuration Data
- String smtpServer = cfgManagement.getConfKey(3, "smtp_server")
- .getConf_value();
- String smtpPort = cfgManagement.getConfKey(3, "smtp_port")
- .getConf_value();
- // String from = "openmeetings@xmlcrm.org";
- String from = cfgManagement.getConfKey(3, "system_email_addr")
- .getConf_value();
-
- String emailUsername = cfgManagement
- .getConfKey(3, "email_username").getConf_value();
- String emailUserpass = cfgManagement
- .getConfKey(3, "email_userpass").getConf_value();
-
- Properties props = System.getProperties();
-
- props.put("mail.smtp.host", smtpServer);
- props.put("mail.smtp.port", smtpPort);
-
- Configuration conf = cfgManagement.getConfKey(3,
- "mail.smtp.starttls.enable");
- if (conf != null) {
- if (conf.getConf_value().equals("1")) {
- props.put("mail.smtp.starttls.enable", "true");
- }
- }
-
- // Check for Authentification
- Session session = null;
- if (emailUsername != null && emailUsername.length() > 0
- && emailUserpass != null && emailUserpass.length() > 0) {
- // use SMTP Authentication
- props.put("mail.smtp.auth", "true");
- session = Session.getDefaultInstance(props,
- new SmtpAuthenticator(emailUsername, emailUserpass));
- } else {
- // not use SMTP Authentication
- session = Session.getDefaultInstance(props, null);
- }
-
- // Building MimeMessage
- MimeMessage mimeMessage = new MimeMessage(session);
- mimeMessage.setSubject(subject);
- mimeMessage.setFrom(new InternetAddress(from));
- mimeMessage.addRecipients(Message.RecipientType.TO,
- InternetAddress.parse(recipients, false));
-
+ @Override
+ protected MimeMessage setMessageBody(MimeMessage msg) throws Exception {
+ log.debug("setMessageBody for iCal message");
// -- Create a new message --
- BodyPart msg = new MimeBodyPart();
- msg.setDataHandler(new DataHandler(new ByteArrayDataSource(
- htmlBody, "text/html; charset=\"utf-8\"")));
-
Multipart multipart = new MimeMultipart();
+ BodyPart html = new MimeBodyPart();
+ html.setDataHandler(new DataHandler(new ByteArrayDataSource(
+ htmlBody, "text/html; charset=\"utf-8\"")));
+
BodyPart iCalAttachment = new MimeBodyPart();
iCalAttachment.setDataHandler(new DataHandler(
- new javax.mail.util.ByteArrayDataSource(
+ new ByteArrayDataSource(
new ByteArrayInputStream(iCalMimeBody),
"text/calendar;method=REQUEST;charset=\"UTF-8\"")));
+ multipart.addBodyPart(html);
multipart.addBodyPart(iCalAttachment);
- multipart.addBodyPart(msg);
-
- mimeMessage.setContent(multipart);
-
- // -- Set some other header information --
- // mimeMessage.setHeader("X-Mailer", "XML-Mail");
- // mimeMessage.setSentDate(new Date());
-
- // Transport trans = session.getTransport("smtp");
- Transport.send(mimeMessage);
+ msg.setContent(multipart);
+ return msg;
}
-
}
}