package pt.estgp.estgweb.services.email;
import jomm.utils.TemplateUtils;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.enums.LangEnum;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.Email;
import pt.estgp.estgweb.utils.EmailPersonalizedCertificated;
import pt.estgp.estgweb.web.utils.DatesUtils;
import pt.utl.ist.berserk.logic.serviceManager.IService;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.text.MessageFormat;
import java.util.*;
/**
* @author Jorge Machado
* @date 20/Mar/2008
* @time 18:31:00
* @see pt.estgp.estgweb.services.email
*/
public class SendEmailService
implements IService
{
private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger =
1.5.0/docs/api/java/util/logging/Logger.html">Logger.
getLogger(SendEmailService.
class);
private static final 1.5.0/docs/api/java/lang/String.html">String gradeUnitTemplate = Globals.
TEMPLATE_EMAIL_PATH +
"/" + Globals.
EMAIL_GRADE_UNIT_TEMPLATE;
static 1.5.0/docs/api/java/lang/String.html">String sendFromAddress
;
public SendEmailService
() {
}
static 1.5.0/docs/api/java/lang/String.html">String[] serverEmails
;
static int serverEmailPos = -
1;
static
{
serverEmails =
new 1.5.0/docs/api/java/lang/String.html">String[Globals.
EMAIL_SERVER_USER_COUNT];
for(int i =
1;i
<= Globals.
EMAIL_SERVER_USER_COUNT;i++
)
{
serverEmails
[i-1
] = Globals.
EMAIL_SERVER_USER_PREFIX + i + Globals.
EMAIL_SERVER_USER_SUFIX;
}
}
public Session connectSession
()
{
sendFromAddress = Globals.
SYSTEM_EMAIL_USE_ROUND_ROBIN ?
getRoundRobinEmailUser
() : Globals.
SYSTEM_EMAIL_BOX;
logger.
info("CONNECTION SESSION EMAIL: " + sendFromAddress +
" using round robin: " + Globals.
SYSTEM_EMAIL_USE_ROUND_ROBIN);
// Set up properties for mail session
1.5.0/docs/api/java/util/Properties.html">Properties props =
1.5.0/docs/api/java/lang/System.html">System.
getProperties();
//Properties props = new Properties();
props.
put("mail.smtp.host", Globals.
EMAIL_SERVER_HOST);
//props.setProperty("mail.transport.protocol", "smtp");//todo new
final 1.5.0/docs/api/java/lang/String.html">String username = Globals.
EMAIL_SERVER_USERNAME;
final 1.5.0/docs/api/java/lang/String.html">String password = Globals.
EMAIL_SERVER_PASSWORD;
javax.
mail.
1.5.0/docs/api/java/net/Authenticator.html">Authenticator authenticator =
null;
if(Globals.
SYSTEM_EMAIL_USE_SECURITY && Globals.
EMAIL_SERVER_SECURITY !=
null && Globals.
EMAIL_SERVER_SECURITY.
compareTo("TLS")==
0)
{
logger.
info("Using Email Security TLS");
props.
put("mail.smtp.auth",
"true");
props.
put("mail.smtp.starttls.enable",
"true");
props.
put("mail.smtp.port",
""+ Globals.
EMAIL_SERVER_SECURITY_TLS);
authenticator =
new javax.
mail.
1.5.0/docs/api/java/net/Authenticator.html">Authenticator() {
protected 1.5.0/docs/api/java/net/PasswordAuthentication.html">PasswordAuthentication getPasswordAuthentication
() {
1.5.0/docs/api/java/lang/System.html">System.
out.
println("Email from:" + sendFromAddress +
" pass:" + password
);
return new 1.5.0/docs/api/java/net/PasswordAuthentication.html">PasswordAuthentication(sendFromAddress, password
);
}
};
}
else if(Globals.
SYSTEM_EMAIL_USE_SECURITY && Globals.
EMAIL_SERVER_SECURITY !=
null && Globals.
EMAIL_SERVER_SECURITY.
compareTo("SSL")==
0)
{
logger.
info("Using Email Security SSL");
props.
put("mail.smtp.socketFactory.port", Globals.
EMAIL_SERVER_SECURITY_SSL);
props.
put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.
put("mail.smtp.auth",
"true");
props.
put("mail.smtp.port", Globals.
EMAIL_SERVER_SECURITY_SSL);
authenticator =
new javax.
mail.
1.5.0/docs/api/java/net/Authenticator.html">Authenticator() {
protected 1.5.0/docs/api/java/net/PasswordAuthentication.html">PasswordAuthentication getPasswordAuthentication
() {
1.5.0/docs/api/java/lang/System.html">System.
out.
println("Email from:" + sendFromAddress +
" pass:" + password
);
return new 1.5.0/docs/api/java/net/PasswordAuthentication.html">PasswordAuthentication(sendFromAddress,password
);
}
};
}
else
{
}
1.5.0/docs/api/java/lang/System.html">System.
out.
println("Autenticator != null :" +
(authenticator
!=
null));
// Get session
/*Session session = authenticator != null ?
Session.getDefaultInstance(props, authenticator)
: Session.getDefaultInstance(props) ;
*/
Session session = authenticator
!=
null ?
Session.
getInstance(props, authenticator
)
: Session.
getInstance(props
) ;
try {
//session.getTransport("smtp").connect(Globals.EMAIL_SERVER_HOST,sendFromAddress,password);
1.5.0/docs/api/java/lang/System.html">System.
out.
println("toString:" + session.
getTransport("smtp").
toString());
Transport transport = session.
getTransport("smtp");
//System.out.println("toString(smtp):" + session.getTransport().toString());
1.5.0/docs/api/java/lang/System.html">System.
out.
println("isConnected:" + transport.
isConnected());
transport.
connect();
1.5.0/docs/api/java/lang/System.html">System.
out.
println("isConnected:" + transport.
isConnected());
1.5.0/docs/api/java/lang/System.html">System.
out.
println("isConnected:" + session.
getTransport("smtp").
isConnected());
//System.out.println("isConnected(smtp):" + session.getTransport("smtp").isConnected());
} catch (MessagingException e
) {
logger.
error(e,e
);
}
session.
setDebug(true);
session.
setDebugOut(1.5.0/docs/api/java/lang/System.html">System.
out);
return session
;
}
private static synchronized 1.5.0/docs/api/java/lang/String.html">String getRoundRobinEmailUser
()
{
serverEmailPos++
;
if(serverEmailPos
>= Globals.
EMAIL_SERVER_USER_COUNT)
{
serverEmailPos =
0;
}
return serverEmails
[serverEmailPos
];
}
public void sendEmail
(Email email
) throws ServiceException
{
sendEmail
(email,
null,
null);
}
public void sendEmail
(Email email,
1.5.0/docs/api/java/lang/String.html">String url,
1.5.0/docs/api/java/lang/String.html">String nome
) throws ServiceException
{
if(Globals.
TEST_ENVIRONEMENT && !email.
isSystemAssumingTestEmail())
{
1.5.0/docs/api/java/lang/String.html">String warn =
"System in TEST Environement - will not send EMAIL";
logger.
warn(warn
);
return;
}
try{
//if(session == null || !session.getTransport().isConnected())
Session session = connectSession
();
// Create message
MimeMessage message =
new MimeMessage
(session
);
// Set the recipients of the message
boolean valid =
false;
for (1.5.0/docs/api/java/lang/String.html">String recipient : email.
getRecipients())
{
if(Email.
validEmail(recipient
))
{
valid=
true;
message.
addRecipient(Message.
RecipientType.
TO,
new InternetAddress
(recipient
));
logger.
info("Adding recipient (" + email.
getType().
toString() +
") to transport:"+recipient
);
}
}
if(email.
getRecipientsCC() !=
null)
{
for (1.5.0/docs/api/java/lang/String.html">String recipient : email.
getRecipientsCC())
{
if(Email.
validEmail(recipient
))
{
//valid=true;
message.
addRecipient(Message.
RecipientType.
CC,
new InternetAddress
(recipient
));
logger.
info("Adding recipient CC (" + email.
getType().
toString() +
") to transport:"+recipient
);
}
}
}
if(valid
)
{
1.5.0/docs/api/java/lang/String.html">String fullMessage = getEmailTextMessage
(email
);
if(url
!=
null && nome
!=
null)
{
logger.
info("Requesting certificated Email, will replace fields in template");
fullMessage = fullMessage.
replaceAll("@USER_NOME@",nome
);
fullMessage = fullMessage.
replaceAll("@URL@",url
);
}
logger.
info("FROM:" + email.
getFrom() +
" but using: " + sendFromAddress
);
//if(email.getFromName() != null)
try {
message.
setFrom(new InternetAddress
(sendFromAddress,sendFromAddress
));
} catch (1.5.0/docs/api/java/io/UnsupportedEncodingException.html">UnsupportedEncodingException e
) {
logger.
error(e,e
);
//message.setFrom(new InternetAddress(sendFromAddress));
}
//else
// message.setFrom(new InternetAddress(Globals.SYSTEM_EMAIL_BOX));
message.
setSubject(email.
getSubject() +
" - não responda para este endereço",
"utf-8");
if(email.
isHtml())
{
fullMessage += email.
getFrom() !=
null && email.
getFrom().
length()>0 && !email.
getFrom().
equals(Globals.
SYSTEM_EMAIL_BOX) ? "<br/><br/>Responda para " + email.
getFrom() :
"<br/><br/>Por favor não responda a este email";
fullMessage +=
" <br/> <br/> <h5> Mensagem Segura - enviada através da Google Apps Api </h5>";
}
else
{
fullMessage += email.
getFrom() !=
null && email.
getFrom().
length()>0 && !email.
getFrom().
equals(Globals.
SYSTEM_EMAIL_BOX) ? "\n\nResponda para " + email.
getFrom() :
"\n\nPor favor não responda a este email";
fullMessage +=
" \n\n Mensagem Segura - enviada através da Google Apps Api ";
}
message.
setText(fullMessage,
"utf-8");
if(email.
isHtml())
{
message.
setHeader("Content-Type",
"text/html; charset=\"utf-8\"");
}
else
{
message.
setHeader("Content-Type",
"text/plain; charset=\"utf-8\"");
}
message.
setHeader("Content-Transfer-Encoding",
"quoted-printable");
logger.
info("Sending email to transport:"+fullMessage
);
Transport.
send(message
);
//session.getTransport("smtp").sendMessage(message,message.getAllRecipients());
//session.getTransport().close();
}
}
catch(MessagingException e
)
{
logger.
error(e,e
);
throw new ServiceException
(e.
toString());
}
}
private static 1.5.0/docs/api/java/lang/String.html">String getEmailTextMessage
(Email email
)
{
return getEmailTextMessage
( email.
getEmailTemplateName(), email.
getArguments().
toArray());
}
public static 1.5.0/docs/api/java/lang/String.html">String getEmailTextMessage
(1.5.0/docs/api/java/lang/String.html">String template,List
<String
> arguments
)
{
return getEmailTextMessage
(template, arguments.
toArray());
}
public static 1.5.0/docs/api/java/lang/String.html">String getEmailTextMessage
(1.5.0/docs/api/java/lang/String.html">String template,
5+0%2Fdocs%2Fapi+Object">Object[] arguments
)
{
1.5.0/docs/api/java/lang/String.html">String content = TemplateUtils.
getOrLoadTemplate(Globals.
TEMPLATE_EMAIL_PATH +
"/" +template
);
// Format the mail message
return 1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.
format(content, arguments
);
}
public Email getSendUrlToFriendEmail
(1.5.0/docs/api/java/lang/String.html">String url,
1.5.0/docs/api/java/lang/String.html">String from, LangEnum langEnum, List
<String
> recipients
)
{
List
<String
> arguments =
new ArrayList
<String
>();
arguments.
add(from
);
arguments.
add(url
);
1.5.0/docs/api/java/lang/String.html">String subjectTxt
;
1.5.0/docs/api/java/lang/String.html">String template
;
if(langEnum == LangEnum.
PORTUGUESE)
{
template = Globals.
EMAIL_SEND_URL_FRIEND_TEMPLATE_PT;
subjectTxt = Globals.
EMAIL_SEND_URL_FRIEND_SUBJECT_PT;
}
else
{
template = Globals.
EMAIL_SEND_URL_FRIEND_TEMPLATE_EN;
subjectTxt = Globals.
EMAIL_SEND_URL_FRIEND_SUBJECT_EN;
}
1.5.0/docs/api/java/lang/String.html">String subject = java.
text.
1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.
format(subjectTxt,
new 1.5.0/docs/api/java/lang/String.html">String[]{from
});
return new Email
(subject ,recipients, Globals.
SYSTEM_EMAIL_BOX,template,arguments
);
}
public boolean sendUrlToFriend
(1.5.0/docs/api/java/lang/String.html">String url,
1.5.0/docs/api/java/lang/String.html">String from, LangEnum langEnum, List
<String
> recipients
)
{
try
{
sendEmail
(getSendUrlToFriendEmail
(url,from,langEnum,recipients
));
return true;
}
catch (ServiceException e
)
{
return false;
}
}
public boolean sendCourseUnitAnnouncement
(CourseUnitAnnouncement announcement, LangEnum langEnum,
1.5.0/docs/api/java/lang/String.html">String from, List
<User
> users
)
{
try
{
sendEmail
(getCourseUnitAnnouncementEmail
(announcement,langEnum,from,users
));
return true;
}
catch (ServiceException e
)
{
return false;
}
}
public static class SendTo
{
public 1.5.0/docs/api/java/lang/String.html">String name
;
public 1.5.0/docs/api/java/lang/String.html">String email
;
public 1.5.0/docs/api/java/lang/String.html">String outEmail
;
}
public Email getMessageEmail
(1.5.0/docs/api/java/lang/String.html">String from,
1.5.0/docs/api/java/lang/String.html">String subject,
1.5.0/docs/api/java/lang/String.html">String text, LangEnum langEnum,
1.5.0/docs/api/java/lang/String.html">String target, List
<String
> emails, User user
)
{
return getMessageEmailAdulteredFromEmail
(null,from,subject,text,langEnum,target,emails,user
);
}
public Email getMessageEmailAdulteredFromEmail
(1.5.0/docs/api/java/lang/String.html">String fromEmail,
1.5.0/docs/api/java/lang/String.html">String from,
1.5.0/docs/api/java/lang/String.html">String subject,
1.5.0/docs/api/java/lang/String.html">String text, LangEnum langEnum,
1.5.0/docs/api/java/lang/String.html">String target, List
<String
> emails, User user
)
{
// # 0 : From
// # 1 : Subject
// # 2 : Text
// # 3 : person
// # 4 : target
List
<String
> arguments =
new ArrayList
<String
>();
arguments.
add(from
);
arguments.
add(subject
);
arguments.
add(text
);
arguments.
add(user.
getName());
arguments.
add(target
);
arguments.
add(fromEmail
);
1.5.0/docs/api/java/lang/String.html">String template
;
if(langEnum == LangEnum.
PORTUGUESE)
{
template = Globals.
EMAIL_MESSAGE_TEMPLATE_PT;
}
else
{
template = Globals.
EMAIL_MESSAGE_TEMPLATE_EN;
}
List
<String
> recipients =
new ArrayList
<String
>();
for(1.5.0/docs/api/java/lang/String.html">String e: emails
)
{
if(Email.
validEmail(e
))
recipients.
add(e
);
}
logger.
info("subject: " + subject
);
if(fromEmail ==
null)
logger.
info("user: " + user.
getEmail());
else
logger.
info("user altered to: " + fromEmail
);
logger.
info("template: " + template
);
logger.
info("arguments:");
for(1.5.0/docs/api/java/lang/String.html">String arg: arguments
)
logger.
info(arg
);
logger.
info("recipients:");
for(1.5.0/docs/api/java/lang/String.html">String rec: recipients
)
logger.
info(rec
);
logger.
info("arguments end");
fromEmail = fromEmail ==
null ? user.
getEmail() : fromEmail
;
Email email =
new Email
(subject ,recipients,fromEmail,template,arguments,Message.
RecipientType.
BCC);
email.
setFromName(from +
" (ESTG)");
return email
;
}
public Email getMessageEmailAdulteredFromEmailIpp
(1.5.0/docs/api/java/lang/String.html">String fromEmail,
1.5.0/docs/api/java/lang/String.html">String from,
1.5.0/docs/api/java/lang/String.html">String subject,
1.5.0/docs/api/java/lang/String.html">String text, List
<String
> emails, User user
)
{
// # 0 : From
// # 1 : Subject
// # 2 : Text
// # 3 : FromEmail Adultered in message
// # 4 : URL todo with certificate
List
<String
> arguments =
new ArrayList
<String
>();
arguments.
add(from
);
arguments.
add(subject
);
arguments.
add(text
);
arguments.
add(fromEmail
);
1.5.0/docs/api/java/lang/String.html">String template
;
template = Globals.
EMAIL_MESSAGE_IPP_TEMPLATE_PT;
List
<String
> recipients =
new ArrayList
<String
>();
for(1.5.0/docs/api/java/lang/String.html">String e: emails
)
{
if(Email.
validEmail(e
))
recipients.
add(e
);
}
logger.
info("subject: " + subject
);
if(fromEmail ==
null)
logger.
info("user: " + user.
getEmail());
else
logger.
info("user altered to: " + fromEmail
);
logger.
info("template: " + template
);
logger.
info("arguments:");
for(1.5.0/docs/api/java/lang/String.html">String arg: arguments
)
logger.
info(arg
);
logger.
info("recipients:");
for(1.5.0/docs/api/java/lang/String.html">String rec: recipients
)
logger.
info(rec
);
logger.
info("arguments end");
fromEmail = fromEmail ==
null ? user.
getEmail() : fromEmail
;
Email email =
new Email
(subject ,recipients,fromEmail,template,arguments,Message.
RecipientType.
TO);
email.
setFromName(from +
" (PAE-IPP)");
return email
;
}
public EmailPersonalizedCertificated getMessageEmailAdulteredFromEmailIppCertificated
(
1.5.0/docs/api/java/lang/String.html">String fromEmail,
1.5.0/docs/api/java/lang/String.html">String from,
1.5.0/docs/api/java/lang/String.html">String subject,
1.5.0/docs/api/java/lang/String.html">String text, User user,
List
<Long
> userIds,
1.5.0/docs/api/java/lang/String.html">String url
)
{
// # 0 : From
// # 1 : Subject
// # 2 : Text
// # 3 : FromEmail Adultered in message
// # 4 : URL todo with certificate
List
<String
> arguments =
new ArrayList
<String
>();
arguments.
add(from
);
arguments.
add(subject
);
arguments.
add(text
);
arguments.
add(fromEmail
);
1.5.0/docs/api/java/lang/String.html">String template
;
template = Globals.
EMAIL_MESSAGE_IPP_TEMPLATE_PT_CERTIFICATED;
logger.
info("Preparing batch work for Personalized Emails Certificated");
logger.
info("subject: " + subject
);
if(fromEmail ==
null)
logger.
info("user: " + user.
getEmail());
else
logger.
info("user altered to: " + fromEmail
);
logger.
info("template: " + template
);
logger.
info("arguments:");
for(1.5.0/docs/api/java/lang/String.html">String arg: arguments
)
logger.
info(arg
);
logger.
info("userIds:" + userIds
);
logger.
info("arguments end");
fromEmail = fromEmail ==
null ? user.
getEmail() : fromEmail
;
EmailPersonalizedCertificated email =
new EmailPersonalizedCertificated
(subject ,fromEmail,template,arguments,
url,
userIds
);
email.
setFromName(from +
" (PAE-IPP)");
return email
;
}
public Email getMessageEmailOld
(1.5.0/docs/api/java/lang/String.html">String from,
1.5.0/docs/api/java/lang/String.html">String subject,
1.5.0/docs/api/java/lang/String.html">String text, LangEnum langEnum,
1.5.0/docs/api/java/lang/String.html">String target, List
<User
> users, User user
)
{
// # 0 : From
// # 1 : Subject
// # 2 : Text
// # 3 : person
// # 4 : target
List
<String
> arguments =
new ArrayList
<String
>();
arguments.
add(from
);
arguments.
add(subject
);
arguments.
add(text
);
arguments.
add(user.
getName());
arguments.
add(target
);
1.5.0/docs/api/java/lang/String.html">String template
;
if(langEnum == LangEnum.
PORTUGUESE)
{
template = Globals.
EMAIL_MESSAGE_TEMPLATE_PT;
}
else
{
template = Globals.
EMAIL_MESSAGE_TEMPLATE_EN;
}
List
<String
> recipients =
new ArrayList
<String
>();
for(User u: users
)
{
if(Email.
validEmail(u.
getEmail()))
recipients.
add(u.
getEmail());
if(Email.
validEmail(u.
getOutEmail()))
recipients.
add(u.
getOutEmail());
}
logger.
info("subject: " + subject
);
logger.
info("user: " + user.
getEmail());
logger.
info("template: " + template
);
logger.
info("arguments:");
for(1.5.0/docs/api/java/lang/String.html">String arg: arguments
)
logger.
info(arg
);
logger.
info("recipients:");
for(1.5.0/docs/api/java/lang/String.html">String rec: recipients
)
logger.
info(rec
);
logger.
info("arguments end");
Email email =
new Email
(subject ,recipients,user.
getEmail(),template,arguments,Message.
RecipientType.
BCC);
email.
setFromName(from +
" (ESTG)");
return email
;
}
public Email getCourseUnitAnnouncementEmail
(CourseUnitAnnouncement announcement, LangEnum langEnum,
1.5.0/docs/api/java/lang/String.html">String from, List
<User
> users
)
{
List
<String
> arguments =
new ArrayList
<String
>();
arguments.
add(announcement.
getCourseUnit().
getName());
arguments.
add(announcement.
getTitle());
arguments.
add(announcement.
getText());
arguments.
add(from
);
1.5.0/docs/api/java/lang/String.html">String subjectTxt
;
1.5.0/docs/api/java/lang/String.html">String template
;
if(langEnum == LangEnum.
PORTUGUESE)
{
template = Globals.
EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_PT;
subjectTxt = Globals.
EMAIL_COURSEUNIT_ANNOUNCEMENT_SUBJECT_PT;
}
else
{
template = Globals.
EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_EN;
subjectTxt = Globals.
EMAIL_COURSEUNIT_ANNOUNCEMENT_SUBJECT_EN;
}
List
<String
> recipients =
new ArrayList
<String
>();
for(User u: users
)
{
if(Email.
validEmail(u.
getEmail()))
recipients.
add(u.
getEmail());
if(Email.
validEmail(u.
getOutEmail()))
recipients.
add(u.
getOutEmail());
}
1.5.0/docs/api/java/lang/String.html">String subject = java.
text.
1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.
format(subjectTxt,
new 1.5.0/docs/api/java/lang/String.html">String[]{announcement.
getCourseUnit().
getNormalizedName(),announcement.
getTitle()});
1.5.0/docs/api/java/lang/String.html">String fromEmail = Globals.
SYSTEM_EMAIL_BOX;
if(announcement.
getOwner() !=
null && Email.
validEmail(announcement.
getOwner().
getEmail()))
fromEmail = announcement.
getOwner().
getEmail();
return new Email
(subject ,recipients,fromEmail,template,arguments,Message.
RecipientType.
BCC);
}
public Email getCourseUnitBlogPostEmail
(BlogPost post, LangEnum langEnum,
1.5.0/docs/api/java/lang/String.html">String from, List
<User
> users
)
{
List
<String
> arguments =
new ArrayList
<String
>();
arguments.
add(((CourseUnitBlog
)post.
getBlog()).
getCourseUnit().
getName());
arguments.
add(post.
getTitle());
arguments.
add(post.
getText());
arguments.
add(from
);
1.5.0/docs/api/java/lang/String.html">String subjectTxt
;
1.5.0/docs/api/java/lang/String.html">String template
;
if(langEnum == LangEnum.
PORTUGUESE)
{
template = Globals.
EMAIL_COURSEUNIT_BLOGPOST_TEMPLATE_PT;
subjectTxt = Globals.
EMAIL_COURSEUNIT_BLOGPOST_SUBJECT_PT;
}
else
{
template = Globals.
EMAIL_COURSEUNIT_BLOGPOST_TEMPLATE_EN;
subjectTxt = Globals.
EMAIL_COURSEUNIT_BLOGPOST_SUBJECT_EN;
}
List
<String
> recipients =
new ArrayList
<String
>();
for(User u: users
)
{
if(Email.
validEmail(u.
getEmail()))
recipients.
add(u.
getEmail());
if(Email.
validEmail(u.
getOutEmail()))
recipients.
add(u.
getOutEmail());
}
1.5.0/docs/api/java/lang/String.html">String subject = java.
text.
1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.
format(subjectTxt,
new 1.5.0/docs/api/java/lang/String.html">String[]{((CourseUnitBlog
)post.
getBlog()).
getCourseUnit().
getNormalizedName(),post.
getTitle()});
1.5.0/docs/api/java/lang/String.html">String fromEmail = Globals.
SYSTEM_EMAIL_BOX;
if(post.
getOwner() !=
null && Email.
validEmail(post.
getOwner().
getEmail()))
fromEmail = post.
getOwner().
getEmail();
return new Email
(subject ,recipients, fromEmail, template,arguments,Message.
RecipientType.
BCC);
}
public Email getCourseUnitWorkEmail
(CourseUnitAssignement assignement, LangEnum langEnum, UserSession userSession, List
<User
> users,
boolean newWork
)
{
List
<String
> arguments =
new ArrayList
<String
>();
arguments.
add(assignement.
getCourseUnit().
getName());
arguments.
add(assignement.
getTitle());
arguments.
add(assignement.
getDescription());
if(userSession
!=
null && userSession.
getName() !=
null)
arguments.
add(userSession.
getName());
else
arguments.
add("unknown");
arguments.
add( DatesUtils.
getStringFromDate(assignement.
getDeliverDate()));
//String directUrl = Globals.EMAIL_COURSEUNIT_WORK_RELATIVE_URL;
//directUrl = Globals.SITE_URL + MessageFormat.format(directUrl,assignement.getCourseUnit().getId());
1.5.0/docs/api/java/lang/String.html">String subjectTxt
;
1.5.0/docs/api/java/lang/String.html">String template
;
if(langEnum == LangEnum.
PORTUGUESE)
{
if(newWork
)
template = Globals.
EMAIL_COURSEUNIT_WORK_TEMPLATE_PT;
else
template = Globals.
EMAIL_COURSEUNIT_WORK_CHANGE_TEMPLATE_PT;
subjectTxt = Globals.
EMAIL_COURSEUNIT_WORK_SUBJECT_PT;
}
else
{
if(newWork
)
template = Globals.
EMAIL_COURSEUNIT_WORK_TEMPLATE_EN;
else
template = Globals.
EMAIL_COURSEUNIT_WORK_CHANGE_TEMPLATE_EN;
subjectTxt = Globals.
EMAIL_COURSEUNIT_WORK_SUBJECT_EN;
}
List
<String
> recipients =
new ArrayList
<String
>();
for(User u: users
)
{
if(Email.
validEmail(u.
getEmail()))
recipients.
add(u.
getEmail());
if(Email.
validEmail(u.
getOutEmail()))
recipients.
add(u.
getOutEmail());
}
1.5.0/docs/api/java/lang/String.html">String subject = java.
text.
1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.
format(subjectTxt,
new 1.5.0/docs/api/java/lang/String.html">String[]{assignement.
getCourseUnit().
getNormalizedName(),assignement.
getTitle()});
1.5.0/docs/api/java/lang/String.html">String fromEmail = Globals.
SYSTEM_EMAIL_BOX;
if(userSession
!=
null && userSession.
getUser() !=
null && Email.
validEmail(userSession.
getUser().
getEmail()))
fromEmail = userSession.
getUser().
getEmail();
return new Email
(subject ,recipients,fromEmail,template,arguments,Message.
RecipientType.
BCC);
}
public Email getNewGradesEmail
(List
<String
[]> grades, LangEnum langEnum,
1.5.0/docs/api/java/lang/String.html">String studentEmail,
1.5.0/docs/api/java/lang/String.html">String studentName
)
{
List
<String
> arguments =
new ArrayList
<String
>();
1.5.0/docs/api/java/lang/String.html">String subject
;
1.5.0/docs/api/java/lang/String.html">String template
;
if(langEnum == LangEnum.
PORTUGUESE)
{
template = Globals.
EMAIL_NEW_GRADES_TEMPLATE_PT;
subject = Globals.
EMAIL_NEW_GRADES_SUBJECT_PT;
}
else
{
template = Globals.
EMAIL_NEW_GRADES_TEMPLATE_EN;
subject = Globals.
EMAIL_NEW_GRADES_SUBJECT_EN;
}
1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder gradesBuilder =
new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder();
for(1.5.0/docs/api/java/lang/String.html">String[] grade: grades
)
{
1.5.0/docs/api/java/lang/String.html">String gradeTxt = TemplateUtils.
formatMessageTemplate(gradeUnitTemplate,grade
);
gradesBuilder.
append(gradeTxt
);
}
arguments.
add(studentName
);
arguments.
add(gradesBuilder.
toString());
List
<String
> recipients =
new ArrayList
<String
>();
recipients.
add(studentEmail
);
return new Email
(subject ,recipients, Globals.
SYSTEM_EMAIL_BOX,template,arguments
);
}
public Email getSummaryEmail
(List
<String
> emails, CourseUnitSummary cUS, CourseUnit c, LangEnum langEnum
)
{
List
<String
> arguments =
new ArrayList
<String
>();
1.5.0/docs/api/java/lang/String.html">String data = DatesUtils.
getStringFromDate(cUS.
getDataAula());
1.5.0/docs/api/java/lang/String.html">String subject
;
1.5.0/docs/api/java/lang/String.html">String template
;
if(langEnum == LangEnum.
PORTUGUESE)
{
template = Globals.
EMAIL_SUMMARY_TEMPLATE_PT;
subject = Globals.
EMAIL_SUMMARY_SUBJECT_PT;
}
else
{
template = Globals.
EMAIL_SUMMARY_TEMPLATE_EN;
subject = Globals.
EMAIL_SUMMARY_SUBJECT_EN;
}
subject = TemplateUtils.
formatMessageTemplate(subject,
new 1.5.0/docs/api/java/lang/String.html">String[]{c.
getName()});
arguments.
add(c.
getName());
arguments.
add(""+cUS.
getNumeroAula());
arguments.
add(data
);
arguments.
add(cUS.
getTitulo());
arguments.
add(cUS.
getDescricao());
List
<String
> recipients =
new ArrayList
<String
>();
for(1.5.0/docs/api/java/lang/String.html">String email:emails
)
recipients.
add(email
);
return new Email
(subject ,recipients, Globals.
SYSTEM_EMAIL_BOX,template,arguments
);
}
//TODO TESTAR
public Email getSummariesEmail
(List
<String
> emails, List
<CourseUnitSummary
> cUS, CourseUnit c, LangEnum langEnum
)
{
1.5.0/docs/api/java/lang/String.html">String ultimaData = DatesUtils.
getStringFromDate(cUS.
get(cUS.
size() - 1
).
getDataAula());
1.5.0/docs/api/java/lang/String.html">String subject
;
1.5.0/docs/api/java/lang/String.html">String template
;
1.5.0/docs/api/java/lang/String.html">String templateFragment
;
if(langEnum == LangEnum.
PORTUGUESE)
{
template = Globals.
EMAIL_SUMMARIES_TEMPLATE_PT;
templateFragment = Globals.
EMAIL_SUMMARIES_FRAGMENT_TEMPLATE_PT;
subject = Globals.
EMAIL_SUMMARY_SUBJECT_PT;
}
else
{
template = Globals.
EMAIL_SUMMARIES_TEMPLATE_EN;
templateFragment = Globals.
EMAIL_SUMMARIES_FRAGMENT_TEMPLATE_EN;
subject = Globals.
EMAIL_SUMMARY_SUBJECT_EN;
}
subject = TemplateUtils.
formatMessageTemplate(subject,
new 1.5.0/docs/api/java/lang/String.html">String[]{c.
getName()});
1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder fragments =
new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder();
List
<String
> arguments =
new ArrayList
<String
>();
1.5.0/docs/api/java/lang/String.html">String fragmentSummaryTemplate = TemplateUtils.
getOrLoadTemplate(Globals.
TEMPLATE_EMAIL_PATH +
"/" + templateFragment
);
for(CourseUnitSummary summary: cUS
)
{
List
<String
> argumentsFrag =
new ArrayList
<String
>();
argumentsFrag.
add(summary.
getTitulo());
argumentsFrag.
add(DatesUtils.
getStringFromDate(summary.
getDataAula()));
argumentsFrag.
add(summary.
getDescricao());
1.5.0/docs/api/java/lang/String.html">String fullMessage =
1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.
format(fragmentSummaryTemplate, argumentsFrag.
toArray());
fragments.
append("\n").
append(fullMessage
);
}
arguments.
add(c.
getName());
arguments.
add(ultimaData
);
arguments.
add(fragments.
toString());
List
<String
> recipients =
new ArrayList
<String
>();
for(1.5.0/docs/api/java/lang/String.html">String email:emails
)
recipients.
add(email
);
return new Email
(subject ,recipients, Globals.
SYSTEM_EMAIL_BOX,template,arguments
);
}
public Email getUnidadeEdicaoEmail
(List
<String
> emails, CourseUnit c, LangEnum langEnum
)
{
List
<String
> arguments =
new ArrayList
<String
>();
1.5.0/docs/api/java/lang/String.html">String subject
;
1.5.0/docs/api/java/lang/String.html">String template
;
if(langEnum == LangEnum.
PORTUGUESE)
{
template = Globals.
EMAIL_UNDADE_EDICAO_TEMPLATE_PT;
subject = Globals.
EMAIL_UNDADE_EDICAO_SUBJECT_PT;
}
else
{
template = Globals.
EMAIL_UNDADE_EDICAO_TEMPLATE_EN;
subject = Globals.
EMAIL_UNDADE_EDICAO_SUBJECT_EN;
}
subject =
1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.
format(ConfigProperties.
getProperty(subject
),
new 1.5.0/docs/api/java/lang/String.html">String[]{c.
getName()});
arguments.
add(c.
getName());
List
<String
> recipients =
new ArrayList
<String
>();
for(1.5.0/docs/api/java/lang/String.html">String email:emails
)
recipients.
add(email
);
return new Email
(subject ,recipients, Globals.
SYSTEM_EMAIL_BOX,template,arguments
);
}
public Email getUnidadeValidadaEmail
(List
<String
> emails, CourseUnit c, LangEnum langEnum
)
{
List
<String
> arguments =
new ArrayList
<String
>();
1.5.0/docs/api/java/lang/String.html">String subject
;
1.5.0/docs/api/java/lang/String.html">String template
;
if(langEnum == LangEnum.
PORTUGUESE)
{
template = Globals.
EMAIL_UNDADE_VALIDADA_TEMPLATE_PT;
subject = Globals.
EMAIL_UNDADE_VALIDADA_SUBJECT_PT;
}
else
{
template = Globals.
EMAIL_UNDADE_VALIDADA_TEMPLATE_EN;
subject = Globals.
EMAIL_UNDADE_VALIDADA_SUBJECT_EN;
}
subject =
1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.
format(ConfigProperties.
getProperty(subject
),
new 1.5.0/docs/api/java/lang/String.html">String[]{c.
getName()});
arguments.
add(c.
getName());
List
<String
> recipients =
new ArrayList
<String
>();
for(1.5.0/docs/api/java/lang/String.html">String email:emails
)
recipients.
add(email
);
return new Email
(subject ,recipients, Globals.
SYSTEM_EMAIL_BOX,template,arguments
);
}
public Email getUnidadeEditadaEmail
(List
<String
> emails, CourseUnit c, LangEnum langEnum
)
{
List
<String
> arguments =
new ArrayList
<String
>();
1.5.0/docs/api/java/lang/String.html">String subject
;
1.5.0/docs/api/java/lang/String.html">String template
;
if(langEnum == LangEnum.
PORTUGUESE)
{
template = Globals.
EMAIL_UNDADE_EDITADA_TEMPLATE_PT;
subject = Globals.
EMAIL_UNDADE_EDITADA_SUBJECT_PT;
}
else
{
template = Globals.
EMAIL_UNDADE_EDITADA_TEMPLATE_EN;
subject = Globals.
EMAIL_UNDADE_EDITADA_SUBJECT_EN;
}
subject =
1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.
format(ConfigProperties.
getProperty(subject
),
new 1.5.0/docs/api/java/lang/String.html">String[]{c.
getName()});
arguments.
add(c.
getCourseName());
arguments.
add(c.
getName());
List
<String
> recipients =
new ArrayList
<String
>();
for(1.5.0/docs/api/java/lang/String.html">String email:emails
)
recipients.
add(email
);
return new Email
(subject ,recipients, Globals.
SYSTEM_EMAIL_BOX,template,arguments
);
}
public Email getRelatorioAvaliacaoUnidadeEditadaEmail
(List
<String
> emails, CourseUnit c, LangEnum langEnum,
1.5.0/docs/api/java/lang/String.html">String estado
)
{
List
<String
> arguments =
new ArrayList
<String
>();
1.5.0/docs/api/java/lang/String.html">String subject
;
1.5.0/docs/api/java/lang/String.html">String template
;
if(langEnum == LangEnum.
PORTUGUESE)
{
template = Globals.
EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_TEMPLATE_PT;
subject = Globals.
EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_SUBJECT_PT;
}
else
{
template = Globals.
EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_TEMPLATE_EN;
subject = Globals.
EMAIL_RELATORIO_AVALIACAO_UNDADE_EDITADA_SUBJECT_EN;
}
subject =
1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.
format(ConfigProperties.
getProperty(subject
),
new 1.5.0/docs/api/java/lang/String.html">String[]{c.
getName()});
arguments.
add(c.
getCourseName());
arguments.
add(c.
getName());
arguments.
add(estado
);
List
<String
> recipients =
new ArrayList
<String
>();
for(1.5.0/docs/api/java/lang/String.html">String email:emails
)
recipients.
add(email
);
return new Email
(subject ,recipients, Globals.
SYSTEM_EMAIL_BOX,template,arguments
);
}
public boolean sendNewGrades
(List
<String
[]> grades, LangEnum langEnum,
1.5.0/docs/api/java/lang/String.html">String studentEmail,
1.5.0/docs/api/java/lang/String.html">String studentName
)
{
try
{
sendEmail
(getNewGradesEmail
(grades,langEnum,studentEmail,studentName
));
return true;
}
catch (ServiceException e
)
{
return false;
}
}
public static void main
(1.5.0/docs/api/java/lang/String.html">String [] args
)
{
1.5.0/docs/api/java/lang/System.html">System.
out.
println( DatesUtils.
getStringFromDate(new 5+0%2Fdocs%2Fapi+Date">Date()));
// List<String[]> grades = new ArrayList<String[]>();
// grades.add(new String[]{"Teste","3"});
// grades.add(new String[]{"Teste2","4"});
// new SendEmailService().sendNewGrades(grades,LangEnum.PORTUGUESE,"jmachado@estgp.pt","jorge Machado");
}
}