使用spring邮件抽象层发送E-mail

来源:互联网 发布:淘宝账号被冻结 编辑:程序博客网 时间:2024/06/12 22:32

在项目中发送普通邮件与发送HTML邮件都并入了 SendMailManager中,发送普通邮件调用SendMail(SystemMail mail)方法,发送HTML邮件调用SendHTMLMail(SystemMail mail)方法。SystemMail类继承自SimpleMailMessage,其中包含了一些对邮件属性的扩展。

使用spring邮件抽象层发送E-mail的步骤

  1. 在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>
  2. 在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
  3. 在需要发送邮件的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);

 

原创粉丝点击