在项目中发送普通邮件与发送HTML邮件都并入了 SendMailManager中,发送普通邮件调用SendMail(SystemMail mail)方法,发送HTML邮件调用SendHTMLMail(SystemMail mail)方法。SystemMail类继承自SimpleMailMessage,其中包含了一些对邮件属性的扩展。
使用spring邮件抽象层发送E-mail的步骤
- 在spring-bean.xml中加入如下bean:
<!-- 发送邮件部分-->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:fireoval.properties</value>
</list>
</property>
</bean>
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host">
<value>${mailserver.host}</value>
</property>
<property name="username">
<value>${mailserver.username}</value>
</property>
<property name="password">
<value>${mailserver.password}</value>
</property>
<property name="javaMailProperties">
<props>
<prop key="mail.transport.protocol">${mailserver.transport.protocol}</prop>
<prop key="mail.store.protocol">${mailserver.store.protocol}</prop>
<prop key="mail.smtp.class">${mailserver.smtp.class}</prop>
<prop key="mail.smtp.host">${mailserver.smtp.host}</prop>
<prop key="mail.smtp.auth">${mailserver.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mailserver.smtp.timeout}</prop>
</props>
</property>
</bean>
<bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">
<property name="from">
<value>${mail.system.from}</value>
</property>
<property name="subject">
<value>${mail.system.subject}</value>
</property>
</bean>
<bean id="sendMailManager" class="com.fireoval.peafowl.business.sys.impl.SendMailManagerImpl">
<property name="mailSender">
<ref bean="mailSender" />
</property>
<property name="message">
<ref bean="mailMessage" />
</property>
</bean> - 在java属性文件中添加邮件服务器属性设置的值以及系统邮件的基本信息,具体属性如下:
#
#Set mail server properties and system mail properties
#
mailserver.host=localhost
mailserver.username=fireoval
mailserver.password=fireoval
mailserver.transport.protocol=smtp
mailserver.store.protocol=pop3
mailserver.smtp.class=com.sun.mail.smtp.SMTPTransport
mailserver.smtp.host=localhost
mailserver.smtp.auth=true
mailserver.smtp.timeout=30000
mail.system.from=fireoval@fireoval.com
mail.system.subject=Notifier: System mai from security channel - 在需要发送邮件的action中对邮件的信息进行设置(以下是发送系统邮件的示例):
//发送培训通知邮件
SendMailManager sendMailMana=(SendMailManager)ServiceManager.getBean("sendMailManager");
SystemMail sysMail=new SystemMail();
UserProfileManager userProfileMana=(UserProfileManager)ServiceManager.getBean("userProfileManager");
UserProfile creator=userProfileMana.getUserById(outTraining.getCreator());
sysMail.setSender(UserSession.getUserId());
sysMail.setSenderName(UserSession.getUsername());
sysMail.setReceiver(outTraining.getCreator());
sysMail.setReceiverName(outTraining.getCreatorName());
sysMail.setTo(creator.getEmail());
if(outTrainingForm.getRemark()==null || outTrainingForm.getRemark()=="")
strBody=strBody+"管理员未给出批复意见";
else
strBody=strBody+"管理员批复意见:/n"+outTrainingForm.getRemark();
sysMail.setText(strHead+strBody);
sendMailMana.sendMail(sysMail);以上是发送普通邮件的示例,发送HTML邮件的示例如下(发送邮件给好友的示例)
MailForm mailForm=(MailForm)form;
UserProfileManager userProfileMana=(UserProfileManager)ServiceManager.getBean("userProfileManager");
UserProfile sender=userProfileMana.getUserById(UserSession.getUserId());
Knowledge knowledge=(Knowledge)request.getSession().getAttribute("knowledge");
String strHead="以下是 "+ sender.getUsername()+" 发送给您的知识库内容:<br /><br />";
String strTitle="标题:"+knowledge.getTitle()+"<br /><br />";
SystemMail mail=new SystemMail();
mail.setSender(UserSession.getUserId());
mail.setSenderName(UserSession.getUsername());
mail.setToAddr(mailForm.getToAddr());
mail.setFrom(sender.getEmail());
mail.setSubject("知识库内容推荐");
mail.setText(strHead+strTitle+mailForm.getText()+"<br /><br />点击数:"+knowledge.getTrack());
sendMailMana.sendHTMLMail(mail);