【EJB2+JBOSS】 Jboss发送邮件

      今天用EJB3写了bug管理小系统,在一个bug提交以后,会自动发送邮件到邮箱。以前在SSH框架中也写过发送邮件的程序,根据原先思路写出来的程序,居然不能运行。后来在网上查了一下,原来Jboss发送邮件要简单的多。只需要配置一下,就可以直接使用程序发送邮件了。

    在jboss中,发送邮件只需要两步即可:

     ① 在%jboss_home%server\default\deploy中配置mail-service.xml文件;

     ② 在程序中组织邮件的发送人,接收人,标题,正文等等的内容,用Transport.send()发送邮件;

下面我们逐一解说这两步的做法。

    

    1)配置mail-service.xml文件。

     在%jboss_home%server\default\deploy路径下,有mail-service.xml文件的模板,如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: mail-service.xml 62350 2007-04-15 16:50:12Z dimitris@jboss.org $ -->
<server>

  <!-- ==================================================================== -->
  <!-- Mail Connection Factory                                              -->
  <!-- ==================================================================== -->
   <mbean code="org.jboss.mail.MailService"
         name="jboss:service=Mail">
    <!--配置JNDIName -->
    <attribute name="JNDIName">java:/Mail</attribute>
    <!-- 配置发邮件的服务器用户名以及密码 -->
    <attribute name="User">nobody</attribute>
    <attribute name="Password">password</attribute>
    <attribute name="Configuration">
      <!-- A test configuration -->
      <configuration>
        
        <!-- 配置邮件服务器默认pop和smtp协议-->
	<!-- Change to your mail server prototocol -->
	<property name="mail.store.protocol" value="pop3"/> 
	<property name="mail.transport.protocol" value="smtp"/>

	<!-- 接收邮件的用户 -->
        <!-- Change to the user who will receive mail  -->
        <property name="mail.user" value="nobody"/>

	<!-- 配置邮件的pop3和stmp服务器-->
        <!-- Change to the mail server  -->
        <property name="mail.pop3.host" value="pop3.nosuchhost.nosuchdomain.com"/>
        <!-- Change to the SMTP gateway server -->
        <property name="mail.smtp.host" value="smtp.nosuchhost.nosuchdomain.com"/>
        
	<!-- 邮件服务器的端口 -->
        <!-- The mail server port -->
        <property name="mail.smtp.port" value="25"/>
        
	<!-- 发出邮件的邮箱地址 -->
        <!-- Change to the address mail will be from  -->
        <property name="mail.from" value="nobody@nosuchhost.nosuchdomain.com"/>

	<!-- 发送邮件过程中,是否打印debug信息以便调试 -->
        <!-- Enable debugging output from the javamail classes -->
        <property name="mail.debug" value="false"/>
      </configuration>
    </attribute>
    <depends>jboss:service=Naming</depends>
  </mbean>

</server>

         在模板上,我写上了中文注释,以便大家明白每个配置都是干什么用的,下面以我在项目中的配置为例,写出来一个配置文件。在项目中,我是利用163的邮件来发送邮件的。配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: mail-service.xml 62350 2007-04-15 16:50:12Z dimitris@jboss.org $ -->
<server>

  <!-- ==================================================================== -->
  <!-- Mail Connection Factory                                              -->
  <!-- ==================================================================== -->

  <mbean code="org.jboss.mail.MailService"
         name="jboss:service=Mail">
    <attribute name="JNDIName">java:/tourMail</attribute>
    <attribute name="User">登陆邮件服务器用户名</attribute>
    <attribute name="Password">登陆邮件服务器密码</attribute>
    <attribute name="Configuration">
      <!-- A test configuration -->
      <configuration>
        <!-- Change to your mail server prototocol -->
		<property name="mail.smtp.auth" value="true"/>
        <property name="mail.store.protocol" value="pop3"/>
        <property name="mail.transport.protocol" value="smtp"/>

        <!-- Change to the user who will receive mail  -->
        <property name="mail.user" value="choukakou"/>

        <!-- Change to the mail server  -->
        <property name="mail.pop3.host" value="pop.163.com"/>

        <!-- Change to the SMTP gateway server -->
        <property name="mail.smtp.host" value="smtp.163.com"/>
        
        <!-- Change to the address mail will be from  -->
        <property name="mail.from" value="XXXX@163.com"/>

        <!-- Enable debugging output from the javamail classes -->
        <property name="mail.debug" value="true"/>
      </configuration>
    </attribute>
    <depends>jboss:service=Naming</depends>
  </mbean>

</server>
    2)在程序中设定发送地址,接收地址,标题以及内容,并发送邮件。

String methodName = "onMessage";
logger.info("<<<<< " + className + ":" + methodName + " Start >>>>>");
    if (message instanceof MapMessage) {
	MapMessage mapMessage = (MapMessage)message;
	logger.info("△△△△△" + className + " message is MapMessage");
	try {
        // 查找JNDIName,JNDIName就是我们在mail-service.xml中配置的JNDIName
	    InitialContext ctx = new InitialContext(); 
	    Session sessions = (Session) ctx.lookup("java:/tourMail"); 	
	    
		// 创建Message
	    MimeMessage msg = new MimeMessage(sessions);
            // 设置发件人地址
	    msg.setFrom(new InternetAddress("choukakou@163.com"));
            // 设置收件人地址
	    msg.setRecipients(javax.mail.Message.RecipientType.TO,mapMessage.getString("mail_to"));
            // 设置消息主题
	    msg.setSubject(mapMessage.getString("subject"));
            // 设置发送时间
	    msg.setSentDate(new java.util.Date());
	    Multipart multipt = new MimeMultipart();
            // 创建邮件内容的正文
	    MimeBodyPart msgbody = new MimeBodyPart();				
	    String text = CreateMailContent.createContent(mapMessage);
	    msgbody.setContent(text,"text/html");
	    multipt.addBodyPart(msgbody);
            // 设置邮件发送邮件的信息
	    msg.setContent(multipt);
            // 发送邮件
	    Transport.send(msg);
	} catch (Exception e) {
	    e.printStackTrace();
	}
  }
logger.info("<<<<< " + className + ":" + methodName + " End >>>>>");

      就是这样,很简单的就可以穿件出一个发送邮件的程序。是不是so easy呢,赶紧试试吧。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值