Update of
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/publisher
In directory james.mmbase.org:/tmp/cvs-serv9447
Modified Files:
Tag: b1_5
NewsletterPublisher.java
Added Files:
Tag: b1_5
HtmlBodyParser.java
Log Message:
CMSC-1084, Newsletter: sending test email contains empty body,forbid empty
content email sended
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/publisher
See also: http://www.mmbase.org/jira/browse/CMSC-1084
HtmlBodyParser.java is new
Index: NewsletterPublisher.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/publisher/NewsletterPublisher.java,v
retrieving revision 1.34.2.1
retrieving revision 1.34.2.2
diff -u -b -r1.34.2.1 -r1.34.2.2
--- NewsletterPublisher.java 3 Nov 2008 06:08:09 -0000 1.34.2.1
+++ NewsletterPublisher.java 13 Nov 2008 08:14:09 -0000 1.34.2.2
@@ -51,57 +51,63 @@
public void deliver(Publication publication, Subscription subscription) {
try {
+ //if needed to prompt user this validate will be remove to Action
+ String originalBody = getBody(publication, subscription);
+ if
(!containAticle(publication)||StringUtils.isBlank(HtmlBodyParser.html2text(originalBody)))
{
+ log.error("the mail does not contain any aticle, please check your
term or article !");
+ return;
+ } else {
NewsletterService service = (NewsletterService)
ApplicationContextFactory.getBean("newsletterServices");
// Newsletter newsletter =
service.getNewsletterBySubscription(subscription.getId());
Newsletter newsletter = publication.getNewsletter();
String replyAddress = newsletter.getReplyAddress();
String toEmail = subscription.getEmail();
Message message = new MimeMessage(getMailSession(toEmail,
replyAddress));
-
- setSenderInfomation(message, newsletter.getFromAddress(),
newsletter.getFromName(), replyAddress, newsletter.getReplyName());
-
- setContent(message, publication, subscription);
+ setSenderInfomation(message, newsletter.getFromAddress(),
newsletter.getFromName(), replyAddress,
+ newsletter.getReplyName());
+ setContent(message, publication, subscription, originalBody);
setRecipient(message, subscription.getEmail());
// setBody(publication, subscription, message);
setTitle(message, newsletter.getTitle());
// setMIME(message, subscription.getMimeType());
-
Transport.send(message);
- log.debug(String.format(
- "mail send! publication %s to %s in %s format",
- publication.getId(), subscription.getId(),
subscription.getMimeType())
- );
}
- catch (MessagingException e) {
+
+ log.debug(String.format("mail send! publication %s to %s in %s
format", publication.getId(), subscription
+ .getId(), subscription.getMimeType()));
+ } catch (MessagingException e) {
log.error(e);
throw new NewsletterSendFailException(e);
- }
- catch (UnsupportedEncodingException e) {
+ } catch (UnsupportedEncodingException e) {
log.error(e);
throw new NewsletterSendFailException(e);
}
}
- private void setContent(Message message, Publication publication,
- Subscription subscription) {
+ private void setContent(Message message, Publication
publication,Subscription subscription,String originalBody) {
Cloud cloud = CloudProviderFactory.getCloudProvider().getCloud();
Node newsletterPublicationNode = cloud.getNode(publication.getId());
NodeList attachmentNodes =
newsletterPublicationNode.getRelatedNodes("attachments");
Multipart multipart = new MimeMultipart();
- MimeBodyPart mdp = new MimeBodyPart();
+ setBody(publication, subscription, multipart,originalBody);
+ setAttachment(multipart, attachmentNodes, MimeType.attachment);
+ NodeList imageNodes =
newsletterPublicationNode.getRelatedNodes("images");
+ setAttachment(multipart, imageNodes, MimeType.image);
try {
- mdp.setContent(getBody(publication, subscription),
subscription.getMimeType());
- multipart.addBodyPart(mdp);
+ message.setContent(multipart);
}
catch (MessagingException e) {
log.error(e);
}
+ }
- setAttachment(multipart, attachmentNodes, MimeType.attachment);
- NodeList imageNodes =
newsletterPublicationNode.getRelatedNodes("images");
- setAttachment(multipart, imageNodes, MimeType.image);
+ private void setBody(Publication publication, Subscription subscription,
Multipart multipart,String originalBody) {
+ MimeBodyPart mdp = new MimeBodyPart();
try {
- message.setContent(multipart);
+ String type=subscription.getMimeType();
+ log.info("the content will be sended:"+originalBody+"\n "+"his type
is :"+type);
+ mdp.setContent(originalBody, type);
+ multipart.addBodyPart(mdp);
}
catch (MessagingException e) {
log.error(e);
@@ -123,8 +129,7 @@
if (mimeType.compareTo(MimeType.image) == 0) {
bads = new ByteArrayDataSource(bytes, "image/"
+ node.getStringValue("itype"));
- }
- else if (mimeType.compareTo(MimeType.attachment) == 0) {
+ } else if (mimeType.compareTo(MimeType.attachment) == 0) {
bads = new ByteArrayDataSource(bytes, node
.getStringValue("mimetype"));
}
@@ -140,40 +145,46 @@
}
}
- private String getBody(Publication publication, Subscription subscription)
- throws MessagingException {
+ private String getBody(Publication publication, Subscription subscription)
throws MessagingException {
- String url = NewsletterUtil.getTermURL(publication.getUrl(), subscription
- .getTerms(), publication.getId());
+ String url = NewsletterUtil.getTermURL(publication.getUrl(),
subscription.getTerms(), publication.getId());
ICache cache = null;
String expiration =
PropertiesUtil.getProperty("publication.cache.expiration");
- if(StringUtils.isEmpty(expiration)) {
+ if (StringUtils.isEmpty(expiration)) {
cache = CacheFactory.getDefaultCache();
- }
- else {
+ } else {
cache = CacheFactory.getDefaultCache(Long.parseLong(expiration));
}
String content = " ";
if ((subscription.getTerms() == null) || (subscription.getTerms().size()
== 0) || !cache.contains(url)) {
- int articleCounts =
NewsletterUtil.countArticlesByNewsletter(publication.getNewsletterId());
- if (articleCounts == 0) {
+ if (!containAticle(publication)) {
content = publication.getNewsletter().getTxtempty();
- }
- else {
- log.info("url---->"+url);
+ log.info("the newsletter use textEmpty" + content);
+ } else {
+ log.info("url---->" + url);
content = NewsletterGenerator.generate(url,
subscription.getMimeType());
}
if (null != getPersonalise()) {
- content = getPersonalise().personalise(content,
subscription,publication);
+ content = getPersonalise().personalise(content, subscription,
publication);
+ log.info("the content sended is Personalised :" + content);
}
cache.add(url, content);
- }
- else{
- content=(String) cache.get(url);
+ } else {
+ content = (String) cache.get(url);
+ log.info("the content sended is from the cache" + content);
}
return content + "\n";
}
+ private boolean containAticle(Publication publication) {
+ int articleCounts =
NewsletterUtil.countArticlesByNewsletter(publication.getNewsletterId());
+ if (articleCounts == 0 ) {
+ return false;
+ }else{
+ return true;
+ }
+ }
+
private void setSenderInfomation(Message message, String fromAddress,
String fromName, String replyAddress, String replyName)
throws MessagingException, UnsupportedEncodingException {
@@ -243,7 +254,7 @@
session = (javax.mail.Session) envCtx.lookup(datasource);
Properties properties = new Properties();
- if(senderEmail == null || senderEmail.indexOf("@") < 1){
+ if (senderEmail == null || senderEmail.indexOf("@") < 1) {
senderEmail = "[EMAIL PROTECTED]";
}
String[] sender = StringUtils.split(senderEmail, "@");
@@ -254,15 +265,14 @@
// properties.put("mail.smtp.from", senderEmail);
properties.putAll(session.getProperties());
-
/*
- session = Session.getInstance(properties,
- new javax.mail.Authenticator() {
+session = Session.getInstance(properties,
+new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("[EMAIL PROTECTED]",
"lgs9000");
}
- });
- */
+});
+*/
}
catch (NamingException e) {
log.fatal("Configured dataSource '" + datasource + "' of context '" +
context + "' is not a Session ");
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs