佛山网站优化推广方案,镇平县两学一做网站,WordPress登录ip,wordpress 商品价格这些天来#xff0c;我的一位同事在使用带有接缝#xff08;2.x版#xff09;的邮件模板发送事件邀请时遇到了问题。 从根本上讲#xff0c;这不是一个艰巨的任务#xff0c;因此我将简要说明使用接缝邮件模板发送事件邀请需要做什么。 发送邮件邀请时#xff0c;您需要发… 这些天来我的一位同事在使用带有接缝2.x版的邮件模板发送事件邀请时遇到了问题。 从根本上讲这不是一个艰巨的任务因此我将简要说明使用接缝邮件模板发送事件邀请需要做什么。 发送邮件邀请时您需要发送带有附件的电子邮件其中包含有关特定事件的信息。 我将创建用于发送邀请的简单模板和发送者类。 Seam 2.x包含其他组件这些组件负责发送邮件和创建模板。 要使用此功能我们需要在应用程序中包括接缝邮件组件而使用maven时我们可以这样做 dependencygroupIdorg.jboss.seam/groupIdartifactIdjboss-seam-mail/artifactId
/dependency 接缝模板机制使我们可以像对标准jsp页面一样创建邮件模板。 它很容易学习并且还可以使用标准的jsp标记如果使用的话是JSF。 在此示例中我将不对接缝邮件模板化机制的使用做进一步的介绍。在下面您可以找到用于发送邀请的模板的简单示例。 !DOCTYPE composition PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
m:message xmlnshttp://www.w3.org/1999/xhtmlxmlns:mhttp://jboss.com/products/seam/mailxmlns:hhttp://java.sun.com/jsf/htmlm:header nameContent-Class valueurn:content-classes:calendarmessage/m:from nameTest Mail addressno-reply-mailinvitation.example /m:to nameIgor Madjeric#{eventInvitation.recipient}/m:tom:subjecth:outputText valueTest invitation /
/m:subjectm:bodym:attachment contentTypetext/calendar;methodCANCEL fileNameinvitation.ics
BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:-//Direct Scouts GmbH//INA//DE
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTAMP:#{eventInvitation.currentDateAsString}
DTSTART:#{eventInvitation.startAsString}
DTEND:#{eventInvitation.endAsString}
SUMMARY;CHARSETUTF-8:Test invitation
UID:de827ded-5fc8-4ceb-af1b-b8d9cfbcbca8
ATTENDEE;ROLEOWNER;PARTSTATNEEDS-ACTION;RSVPFALSE:MAILTO:#{eventInvitation.recipient}
ORGANIZER:MAILTO:xxxgmail.com
LOCATION;CHARSETUTF-8:#{eventInvitation.location}
DESCRIPTION;CHARSETUTF-8:#{eventInvitation.description}
SEQUENCE:0
PRIORITY:5
CLASS:PUBLIC
STATUS:CONFIRMED
TRANSP:OPAQUE
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:REMINDER
TRIGGER;RELATEDSTART:-PT00H15M00S
END:VALARM
END:VEVENT
END:VCALENDAR/m:attachment
/m:body
/m:message 如您所见它并不复杂就像制作JSP页面一样。 创建邀请时您需要注意UID它是为其创建邀请的事件的唯一标识符因此如果以后需要更改有关该事件的某些内容则只需要使用相同的UID。 在此示例中我创建了EventInvitation模型类其中包含事件所需的数据。 它们不包含大量数据但是如果您需要更多数据则可以对其进行扩展。 package ba.codecentric.mail.sender.model;import java.text.SimpleDateFormat;
import java.util.Date;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;Name(eventInvitation)
Scope(ScopeType.PAGE)
public class EventInvitation {SimpleDateFormat iCalendarDateFormat new SimpleDateFormat(yyyyMMddTHHmm00);private String recipient;private String location;private String description;/* Start and stop dates */private Date start;private Date end;public String getRecipient() {return recipient;}public void setRecipient(String recipient) {this.recipient recipient;}public String getLocation() {return location;}public void setLocation(String location) {this.location location;}public String getDescription() {return description;}public void setDescription(String description) {this.description description;}public String getStartAsString() {return iCalendarDateFormat.format(start);}public String getEndAsString() {return iCalendarDateFormat.format(end);}public Date getStart() {return start;}public void setStart(Date start) {this.start start;}public Date getEnd() {return end;}public void setEnd(Date end) {this.end end;}public String getCurrentDateAsString() {return iCalendarDateFormat.format(new Date());}Overridepublic String toString() {return EventInvitation [recipient recipient , location location , description description , start start , end end ];}
} 它是具有页面范围的简单接缝组件与页面停留时间相同。 从模板中可以看到我们使用方法..AsString设置日期值。 这是因为我们不能简单地使用原始日期来表示邀请中的日期而是使用下一种格式“ yyyyMMddTHHmm00”来格式化日期。 为了填写日期我使用了下一个简单表格 !DOCTYPE composition PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
ui:composition xmlnshttp://www.w3.org/1999/xhtml
xmlns:uihttp://java.sun.com/jsf/facelets
xmlns:hhttp://java.sun.com/jsf/html
xmlns:shttp://jboss.com/products/seam/taglib
xmlns:richhttp://richfaces.org/rich
xmlns:a4jhttp://richfaces.org/a4j
xmlns:fhttp://java.sun.com/jsf/core
template/includes/template.xhtml!-- main content --
ui:define nameMainContent
div classWelcomeContent
a4j:form
rich:panel headerWelcom To Seam Mail Invitation Sender stylewidth: 315px
Start:rich:calendar value#{eventInvitation.start}
popuptrue
datePatterndd/M/yy hh:mm a
showApplyButtontrue
cellWidth24px
cellHeight22px
stylewidth:200px/
br /
End:rich:calendar value#{eventInvitation.end}
popuptrue
datePatterndd/M/yy hh:mm a
showApplyButtontrue
cellWidth24px
cellHeight22px
stylewidth:200px/
br /
Location:h:inputText value#{eventInvitation.location} idlocation/
br /
Description:h:inputText value#{eventInvitation.description} iddescription/
br /
Recipient:h:inputText value#{eventInvitation.recipient} idrecipient/
a4j:commandButton valueSend Invitation
action#{mailInvitationSender.sendInvitation} reRenderinfo /
h:panelGroup idinfo
h:outputText valueStatus: #{mailInvitationSender.status} rendered#{not empty mailInvitationSender.status} /
/h:panelGroup
/rich:panel
/a4j:form
/div
/ui:define
/ui:composition 填充数据的简单页面没有什么复杂的。 最后我们将研究发送者类。 package ba.codecentric.mail.sender.controller.impl;import javax.ejb.Remove;
import javax.ejb.Stateful;import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.faces.Renderer;
import org.jboss.seam.log.Log;import ba.codecentric.mail.sender.controller.LocalMailInvitationSender;
import ba.codecentric.mail.sender.model.EventInvitation;Name(mailInvitationSender)
Scope(ScopeType.CONVERSATION)
Stateful
public class StandardMailInvitationSender implements LocalMailInvitationSender {private static final String STATUS_SUCCESS SUCCESS;
private static final String STATUS_FAIL FAIL;private static String INVITATION_TEMPLATE /invitation.xhtml;Logger
private static Log LOG;// Component used for rendering template.
In(create true)
private Renderer renderer;In
private EventInvitation eventInvitation;private String status;public String getStatus() {
return status;
}public void setStatus(String status) {
this.status status;
}Override
public void sendInvitation() {
LOG.info(Send invitation method is called!);
try {
LOG.debug(eventInvitation);
renderer.render(INVITATION_TEMPLATE);
status STATUS_SUCCESS;
} catch (Exception e) {
LOG.error(e);
status STATUS_FAIL;
}
LOG.info(Invitation sending: status);
}Remove
public void done() {
LOG.debug(Bean removed!);
}
} 这是简单的类使用渲染器基于模板创建邮件。 因此没有什么特别的。 当然您需要在components.xml中配置邮件会话但这是简单的配置。 您需要在components.xml中添加下一行 mail:mail-session session-jndi-namejava:/Mail / 就这样。 您的应用程序已准备好发送邀请)。 注意components.xml中的上述行将创建邮件会话组件seam将使用该组件来发送邮件。 例如如果您使用JBoss 4.xx则可以在“ mail-service.xml”文件中编辑配置。 但是如何配置邮件会话不在本文的讨论范围内如果您需要有关此主题的更多信息可以查看我较早的文章“ Configure Seam Mail”。 参考在Igor Madjeric博客上从我们的JCG合作伙伴 Igor Madjeric 发送带有Seam的活动邀请 。 翻译自: https://www.javacodegeeks.com/2012/10/sending-event-invitations-with-seam.html