Spring Mail邮件发送

1.  准备发送邮件需要的jar

<classpathentry kind="lib" path="lib/activation.jar"/>

    <classpathentry kind="lib" path="lib/commons-logging-1.1.1.jar"/>

    <classpathentry kind="lib" path="lib/mail.jar"/>

    <classpathentry kind="lib" path="lib/org.apache.log4j_1.2.12.jar"/>

    <classpathentry kind="lib" path="lib/org.springframework.aop-3.1.1.RELEASE.jar"/>

    <classpathentry kind="lib" path="lib/org.springframework.asm-3.1.1.RELEASE.jar"/>

    <classpathentry kind="lib" path="lib/org.springframework.aspects-3.1.1.RELEASE.jar"/>

    <classpathentry kind="lib" path="lib/org.springframework.beans-3.1.1.RELEASE.jar"/>

    <classpathentry kind="lib" path="lib/org.springframework.context-3.1.1.RELEASE.jar"/>

    <classpathentry kind="lib" path="lib/org.springframework.core-3.1.1.RELEASE.jar"/>

    <classpathentry kind="lib" path="lib/org.springframework.expression-3.1.1.RELEASE.jar"/>

    <classpathentry kind="lib" path="lib/org.springframework.transaction-3.1.1.RELEASE.jar"/>

    <classpathentry kind="lib" path="lib/spring-context-support.jar"/>

 

2.  配置发送邮件的Bean

<beanid="mailSender"class="org.springframework.mail.javamail.JavaMailSenderImpl"> 

        <propertyname="host"value="smtp.163.com"/>

        <propertyname="port"value="25"/>

        <propertyname="username"value="chenxiang0207@163.com"/>

        <propertyname="password"value="****"/> 

                

        <propertyname="javaMailProperties">

            <props>

                <propkey="mail.smtp.auth">true</prop>

            </props>

        </property>

    </bean> 

 

3.  编写发送邮件

3.1发送文本邮件

/**

     * 发送文本信息的邮件. <br>

     * @author ices 2012-12-4下午4:09:49<br>

     */

    publicvoid sendMessage() {

        final ApplicationContext context =new ClassPathXmlApplicationContext(

               new String[] {"com/mail/applicationContext.xml"});

        JavaMailSender sender = (JavaMailSender) context.getBean("mailSender");

        // SimpleMailMessage只能用来发送text格式的邮件

        SimpleMailMessage mail = new SimpleMailMessage();  

        try

           mail.setTo("chenxiang0207@163.com");

           mail.setFrom("chenxiang0207@163.com");

           mail.setSubject("测试邮件");

           mail.setText("SpringMail邮件发送");

           sender.send(mail); 

        } catch (Exception e) {

           thrownew RuntimeException(e);

       

    }

 

3.2发送Html格式邮件

/**

     * 发送HTML信息的邮件. <br>

     * @author ices 2012-12-4下午4:09:49<br>

     */

    publicvoid sendHtmlMessage() {

        final ApplicationContext context =new ClassPathXmlApplicationContext(

               new String[] {"com/mail/applicationContext.xml"});

        JavaMailSender sender = (JavaMailSender) context.getBean("mailSender");

       

        try {  

           JavaMailSenderImpl senderImpl =new JavaMailSenderImpl();  

           MimeMessage mailMessage = senderImpl.createMimeMessage();  

           //设置utf-8或GBK编码,否则邮件会有乱码  

           MimeMessageHelper messageHelper =new MimeMessageHelper(mailMessage,true,"utf-8");  

       

           messageHelper.setTo("chenxiang0207@163.com");

           messageHelper.setFrom("chenxiang0207@163.com"); 

           messageHelper.setSubject("测试邮件");

           //邮件内容,参数true,表示启用html格式  

           messageHelper.setText("<html><head></head><body><h1>SpringMail邮件发送</h1></body></html>",true);  

           sender.send(mailMessage);  

        } catch (Exception e) {  

           thrownew RuntimeException(e);

        }  

    }

 

3.3发送Html格式并带附件的邮件

/**

     * 发送HTML信息并有附件的邮件. <br>

     * @author ices 2012-12-4下午4:09:49<br>

     */

    publicvoid sendAttachMessage() {

        final ApplicationContext context =new ClassPathXmlApplicationContext(

               new String[] {"com/mail/applicationContext.xml"});

        JavaMailSender sender = (JavaMailSender) context.getBean("mailSender");

         

        try {

           JavaMailSenderImpl senderImpl =new JavaMailSenderImpl();  

           MimeMessage mailMessage = senderImpl.createMimeMessage();  

           MimeMessageHelper messageHelper =new MimeMessageHelper(mailMessage,true,"utf-8"); 

           

           messageHelper.setTo("chenxiang0207@163.com");

           messageHelper.setFrom("chenxiang0207@163.com"); 

           messageHelper.setSubject("测试邮件");

           messageHelper.setText("<html><head></head><body><h1>SpringMail邮件发送</h1></body></html>",true);  

           

           //附件内容  

           messageHelper.addInline("a",new File("file/2080.BMP"));  

           messageHelper.addInline("b",new File("file/Sunset.jpg"));   

           File file =new File("file/中华民族.txt");    

           // MimeUtility.encodeWord()用来解决附件名称的中文问题

           messageHelper.addAttachment(MimeUtility.encodeWord(file.getName()), file);   

           sender.send(mailMessage);  

        } catch (Exception e) {  

           thrownew RuntimeException(e);

       

    }

 

4.  包冲突问题解决

java.lang.VerifyError: (class: org/springframework/mail/javamail/JavaMailSenderImpl, method: doSend signature:

(

[Ljavax/mail/internet/MimeMessage;

[Ljava/lang/Object;

)V

) Incompatible argument to function

    at java.lang.Class.getDeclaredConstructors0(Native Method)

    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2404)

 

由于javaee-api-5.0-2.jar与spring-context-support-3.2.0.M1.jar存在相同的类“javax/mail/internet/MimeMessage.java”,导致上述的错误。

解决方法:删除javaee-api-5.0-2.jar的mail包。

 

 程序与JAR下载

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值