今天小弟写个定时发送邮件的功能 但碰到问题了这个是我spring配置文件<bean id="mailSession" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:/mail</value>
</property>
</bean>

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="session">
<ref bean="mailSession"/>
</property>
</bean>

<bean id="simpleMessage" class="org.springframework.mail.SimpleMailMessage">
<property name="to">
<value>[email protected]</value>
</property>
<property name="subject">
<value>This is null</value>
</property>
</bean>

<bean id="courseService" class="com.accp.mail.service.impl.CourseServiceImpl">
<property name="mailSender">
<ref bean="mailSender"/>
</property>
<property name="simpleMessage">
<ref bean="simpleMessage"/>
</property>
</bean>

<bean id="courseServiceInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="courseService"/>
</property>
<property name="targetMethod">
<value>sendMail</value>
</property>
</bean>

<bean id="courseResportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="courseServiceInvokingJobDetail"/>
</property>
<property name="cronExpression">
<value>0 43 21 * * ?</value>
</property>
</bean>

<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="courseServiceInvokingJobDetail"/>
</list>
</property>
</bean>
web.xml的配置代码 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:applicationContext.xml</param-value>
 </context-param>
 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
 <login-config>
  <auth-method>BASIC</auth-method>
 </login-config>
这个是实现邮件发送的代码package com.accp.mail.service.impl;import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;import com.accp.mail.service.CourseService;public class CourseServiceImpl implements CourseService {

private MailSender mailSender;

private SimpleMailMessage simpleMessage; public void setMailSender(MailSender mailSender) {
this.mailSender = mailSender;
} public void setSimpleMessage(SimpleMailMessage simpleMessage) {
this.simpleMessage = simpleMessage;
} public void sendMail() {
SimpleMailMessage message = this.simpleMessage;
String messageText = "My Content is null~";
message.setText(messageText);
mailSender.send(message);
}}

解决方案 »

  1.   

    另外附上 jboss的mail配置<?xml version="1.0" encoding="UTF-8"?>
    <!-- $Id: mail-service.xml 62349 2007-04-15 16:48:15Z [email protected] $ -->
    <server>  <!-- ==================================================================== -->
      <!-- Mail Connection Factory                                              -->
      <!-- ==================================================================== -->  <mbean code="org.jboss.mail.MailService"
             name="jboss:service=Mail">
        <attribute name="JNDIName">java:/mail</attribute>
        <attribute name="User">qdlover125</attribute>
        <attribute name="Password">123456</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="qdlover125"/>        <!-- Change to the mail server  -->
            <property name="mail.pop3.host" value="pop3.sina.com"/>        <!-- Change to the SMTP gateway server -->
            <property name="mail.smtp.host" value="smtp.sina.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="[email protected]"/>        <!-- Enable debugging output from the javamail classes -->
            <property name="mail.debug" value="true"/>
          </configuration>
        </attribute>
        <depends>jboss:service=Naming</depends>
      </mbean></server>呵呵 密码我更改了 
      

  2.   

    下面的异常是我启动jboss产生的org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scheduler' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.util.ArrayList] to required type [org.quartz.Trigger[]] for property 'triggers'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [org.quartz.JobDetail] to required type [org.quartz.Trigger] for property 'triggers[0]': no matching editors or conversion strategy found
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:478)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
      

  3.   

    呵呵 胡乱的搞定了 下面我把我正确的配置搞下来
    修改下spring配置文件就ok了 
    <?xml version="1.0" encoding="UTF-8"?>
    <beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- 定义邮箱信息 -->
    <bean id="mailSession" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
    <value>java:/mail</value>
    </property>
    </bean>

    <!-- 定义邮件发送 -->
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="session">
    <ref bean="mailSession"/>
    </property>
    </bean>

    <!-- 定义邮件模板 -->
    <bean id="simpleMessage" class="org.springframework.mail.SimpleMailMessage">
    <property name="to">
    <value>[email protected]</value>
    </property>
    <property name="subject">
    <value>This is null</value>
    </property>
    </bean>

    <!-- 配置邮件发送实现 -->
    <bean id="courseService" class="com.accp.mail.service.impl.CourseServiceImpl">
    <property name="mailSender">
    <ref bean="mailSender"/>
    </property>
    <property name="simpleMessage">
    <ref bean="simpleMessage"/>
    </property>
    </bean>

    <!-- 定义时间调度 -->
    <bean id="courseServiceInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject">
    <ref bean="courseService"/>
    </property>
    <property name="targetMethod">
    <value>sendMail</value>
    </property>
    </bean>

    <!-- 调度一个cron工作 -->
    <bean id="courseResportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail">
    <ref bean="courseServiceInvokingJobDetail"/>
    </property>
    <property name="cronExpression">
    <value>0 44 22 * * ?</value>
    </property>
    </bean>

    <!-- 启动工作 -->
    <bean id="scheduler" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
    <list>
    <ref bean="courseResportTrigger"/>
    </list>
    </property>
    </bean>

    </beans>