1 31 32 package org.opencms.newsletter; 33 34 import org.opencms.file.CmsObject; 35 import org.opencms.file.CmsPropertyDefinition; 36 import org.opencms.file.CmsResource; 37 import org.opencms.mail.CmsHtmlMail; 38 import org.opencms.mail.CmsSimpleMail; 39 import org.opencms.mail.CmsVfsDataSource; 40 import org.opencms.main.CmsException; 41 import org.opencms.util.CmsMacroResolver; 42 import org.opencms.util.CmsStringUtil; 43 44 import java.text.DateFormat ; 45 import java.util.ArrayList ; 46 import java.util.Date ; 47 import java.util.Iterator ; 48 import java.util.List ; 49 50 import javax.mail.MessagingException ; 51 52 import org.apache.commons.mail.Email; 53 54 59 public class CmsNewsletter implements I_CmsNewsletter { 60 61 62 private List m_attachments; 63 64 65 private List m_contents; 66 67 68 private String m_subject; 69 70 71 public CmsNewsletter() { 72 73 m_contents = new ArrayList (); 74 m_attachments = new ArrayList (); 75 } 76 77 81 public void addAttachment(CmsObject cms, CmsResource resource) { 82 83 m_attachments.add(resource); 84 } 85 86 90 public void addContent(I_CmsNewsletterContent content) { 91 92 m_contents.add(content); 93 } 94 95 106 public Email getEmail(CmsObject cms, I_CmsNewsletterRecipient recipient) throws MessagingException , CmsException { 107 108 StringBuffer htmlMsg = new StringBuffer (1024); 109 StringBuffer txtMsg = new StringBuffer (1024); 110 Iterator contents = m_contents.iterator(); 111 while (contents.hasNext()) { 112 I_CmsNewsletterContent content = (I_CmsNewsletterContent)contents.next(); 113 if (recipient.isSubscriber(content)) { 114 if (content.getType().equals(CmsNewsletterContentType.TYPE_HTML)) { 115 htmlMsg.append(content.getContent()); 116 } else { 117 txtMsg.append(content.getContent()); 118 } 119 } 120 } 121 Email email; 122 if ((htmlMsg.length() > 0) || !m_attachments.isEmpty()) { 123 CmsHtmlMail htmlMail = new CmsHtmlMail(); 125 htmlMail.setHtmlMsg(replaceMacros(htmlMsg.toString(), recipient)); 126 Iterator attachments = m_attachments.iterator(); 127 while (attachments.hasNext()) { 128 CmsResource resource = (CmsResource)attachments.next(); 129 String description = ""; 132 String propertyDescription = cms.readPropertyObject( 133 cms.getSitePath(resource), 134 CmsPropertyDefinition.PROPERTY_DESCRIPTION, 135 true).getValue(); 136 if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(propertyDescription)) { 137 description = propertyDescription; 138 } else { 139 String propertyTitle = cms.readPropertyObject( 140 cms.getSitePath(resource), 141 CmsPropertyDefinition.PROPERTY_TITLE, 142 true).getValue(); 143 description = propertyTitle; 144 } 145 htmlMail.attach(new CmsVfsDataSource(cms, resource), resource.getName(), description); 146 } 147 htmlMail.setTextMsg(replaceMacros(txtMsg.toString(), recipient)); 148 email = htmlMail; 149 } else { 150 CmsSimpleMail textMail = new CmsSimpleMail(); 152 textMail.setMsg(replaceMacros(txtMsg.toString(), recipient)); 153 email = textMail; 154 } 155 email.addTo(recipient.getEmail()); 156 email.setSubject(m_subject); 157 return email; 158 } 159 160 164 public void setSubject(String subject) { 165 166 m_subject = subject; 167 } 168 169 177 private String replaceMacros(String msg, I_CmsNewsletterRecipient recipient) { 178 179 CmsMacroResolver resolver = CmsMacroResolver.newInstance(); 180 resolver.addMacro(MACRO_USER_FIRSTNAME, recipient.getFirstname()); 181 resolver.addMacro(MACRO_USER_LASTNAME, recipient.getLastname()); 182 resolver.addMacro(MACRO_USER_FULLNAME, recipient.getFullName()); 183 resolver.addMacro(MACRO_USER_EMAIL, recipient.getEmail()); 184 resolver.addMacro( 185 MACRO_SEND_DATE, 186 DateFormat.getDateTimeInstance().format(new Date (System.currentTimeMillis()))); 187 return resolver.resolveMacros(msg); 188 } 189 }
| Popular Tags
|