`

spring来发EMAIL

阅读更多

最近一直在学习台湾林信良的<<spring 技术手册》,写的十分不错,入门的好书,今逐渐将其心得和重要理论笔记之。

spring对mail的支持是org.springframework.mail.MailSender接口来定义的,其中的org.springframework.mail.javamail.JavamailSenderImpl这个实现类提供了对javamail的支持,下面简单介绍其用法,首先看下不用注入的方法,再看用注入的方法。

1、发送简单邮件的例子
     首先,我们要需要springframwork 1.2.8中lib目录下的j2ee目录的activation.jar和mail.jar文件,将它们放到工程的lib目录下去。
  发送一个简单邮件的例子如下
  import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.SimpleMailMessage;

public class SimpleMailDemo {
    public static void main(String[] args) throws Exception {
        JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
        // 设定 Mail Server
        senderImpl.setHost("mail.xxxxx");
        
      //SMTP验证时,需要用户名和密码
        senderImpl.setUsername("abc");
        senderImpl.setPassword("defdf");
       
        // 建立邮件讯息
        SimpleMailMessage mailMessage = new SimpleMailMessage();
       
        // 设定收件人、寄件人、主题与内文
        mailMessage.setTo(hello@abc.com);
        mailMessage.setFrom(der@def.com);
        mailMessage.setSubject("Test");
        mailMessage.setText("This is a test!!!");
       
        // 传送邮件
        senderImpl.send(mailMessage);
       
        System.out.println("邮件传送OK..");
    }
}

2、发送HTML格式的邮件
    要发送HTML格式的话,要用org.springframework.mail.javamail.MimeMessageHelper来建立HTML邮件
  import org.springframework.mail.javamail.JavaMailSenderImpl;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.MimeMessageHelper;

public class HTMLMailDemo {
    public static void main(String[] args) throws Exception {
        JavaMailSenderImpl senderImpl =
            new JavaMailSenderImpl();
        
      // 设定 Mail Server
        senderImpl.setHost("mail.xxxxx");
        
      //SMTP验证时,需要用户名和密码
        senderImpl.setUsername("abc");
        senderImpl.setPassword("defdf");
        
        // 建立邮件讯息
        MimeMessage mailMessage =
            senderImpl.createMimeMessage();
        MimeMessageHelper messageHelper =
            new MimeMessageHelper(mailMessage);
               
        // 设定收件人、寄件人、主题与内文
        messageHelper.setTo("xxx@your_mail_server.com");
        messageHelper.setFrom("xxx@your_mail_server.com");
        messageHelper.setSubject("Test");
        messageHelper.setText(
                "<html><head></head><body><h1>Hello! Spring!"
                + "</h1></body></html>", true);
       
        // 传送邮件
        senderImpl.send(mailMessage);
       
        System.out.println("邮件传送OK...");
    }
}
 
3、发送带附件的邮件
    这时要用MimeMessageHelper的addAttachement()方法
 import java.io.File;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import javax.mail.internet.MimeMessage;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.MimeMessageHelper;

public class AttachedFileDemo {
    public static void main(String[] args) throws Exception {
        JavaMailSenderImpl senderImpl =
                      new JavaMailSenderImpl();
        
                //SMTP验证时,需要用户名和密码
        senderImpl.setUsername("abc");
        senderImpl.setPassword("defdf");

                MimeMessage mailMessage =     senderImpl.createMimeMessage();
        MimeMessageHelper messageHelper =  new MimeMessageHelper(mailMessage, true);
                
           messageHelper.setTo("def@erer.net");
        messageHelper.setFrom("bfg@tom.com");
        messageHelper.setSubject("Test");
        messageHelper.setText(
            "<html><head></head><body><h1>Hello! Spring!"
            + "</h1></body></html>", true);
       
        FileSystemResource file =
                new FileSystemResource(
                           new File("d:/test.rar"));
        messageHelper.addAttachment("test.rar", file);
        
               senderImpl.send(mailMessage);
       
        System.out.println("OK");
    }
}


4、用注入的方式来配置邮件,和之前的差不多拉
  <?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "spring-beans.dtd" >

<beans>

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

<property name="host">

  <value>smtp.xxx.com</value>

</property>

<property name="javaMailProperties">

  <props>

    <!-- 如果要使用用户名和密码验证,这一步需要 -->

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

  </props>

</property>

<property name="username">

<value>你的Email地址</value>

</property>

<property name="password">

<value>你的Email密码</value>

</property>


</bean>

 

<!-- 简单的message -->


<bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">

<property name="to">

<value>收件人地址</value>

</property>

 

<property name="from">

<value>你的地址</value>

 

</property>

<property name="subject"> <!-- Email 标题 -->

<value>A Spring Mail sender</value>

</property>

</bean>

 

<!-- 测试发送的类 -->


<bean id="testMailSender" class="test.mail.TestSenderMail">

<property name="mailMessage">

<ref bean="mailMessage"/>

</property>

 

<property name="mailSender">

<ref bean="mailSender"/>

</property>

</bean>


</beans>

上面的配置好以后就可以直接发送了, 看看TestSenderMail.java的代码:

package test.mail;

import org.springframework.mail.MailException;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;

public class TestSenderMail {
  private MailSender mailSender;
  private SimpleMailMessage mailMessage;
 
  public TestSenderMail() {
   
  }
 
  public SimpleMailMessage getMailMessage() {
    return mailMessage;
  }
  public void setMailMessage(SimpleMailMessage mailMessage) {
    this.mailMessage = mailMessage;
  }
  public MailSender getMailSender() {
    return mailSender;
  }
  public void setMailSender(MailSender mailSender) {
    this.mailSender = mailSender;
  }
 
  public void sendMail() {
    SimpleMailMessage message = new SimpleMailMessage(mailMessage);
    //设置email内容,
    message.setText("测试Spring 发送Email.");
   
    try {
      mailSender.send(message);
    } catch (MailException e) {
      // TODO Auto-generated catch block
      System.out.println("O . 发送Email失败了....");
      e.printStackTrace();
    }
  }
}

TestApp.java

 

package test.mail;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestApp {

  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    ApplicationContext context = new ClassPathXmlApplicationContext(
        "test/mail/mail.xml");

    TestSenderMail sender = (TestSenderMail) context
        .getBean("testMailSender");
    sender.sendMail();
  }
  }

 

分享到:
评论
1 楼 aaron2007 2009-01-09  
Exception in thread "main" org.springframework.mail.MailSendException; nested exception details (1) are:
Failed message 1:
javax.mail.MessagingException: 503 Error: need EHLO and AUTH first !

at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1020)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:716)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:388)
at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:382)
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:291)
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:277)
at cn.ac.roche.springemail.SpringEmail.main(SpringEmail.java:25)


==========================第一个简单例子的时候出现上面的错误===================

相关推荐

    Java发送email:spring email、微软ews

    本篇文章将深入探讨如何使用Java结合Spring框架和微软的Exchange Web Services (EWS)来发送电子邮件。 首先,让我们从Spring Email说起。Spring Framework提供了`spring-context-support`模块,其中包含了一个Email...

    Spring Email

    总的来说,Spring Email 提供了灵活且强大的邮件发送能力,无论是在小型项目还是大型企业级应用中都能胜任。通过适当的配置和API使用,我们可以轻松地实现在各种场景下的邮件发送需求。在实际开发中,确保正确配置...

    Spring发送Email

    而发送电子邮件是许多应用程序中常见的需求,Spring框架通过其邮件支持模块Spring Mail,为开发者提供了一个简单易用的方式来实现这一功能。本文将深入探讨如何使用Spring发送电子邮件。 首先,我们需要了解Spring ...

    spring发送Email

    本教程将深入探讨如何利用Spring的JavaMailSender接口及其实现来发送电子邮件。首先,我们需要理解Spring对邮件服务的支持。 1. **配置邮件服务器** - 在Spring应用中,我们需要配置JavaMailSender接口的实现,...

    使用springMail发送带附件的email

    public class EmailService { @Autowired private JavaMailSender mailSender; public void sendEmailWithAttachment(String to, String subject, String text, String attachmentFilePath) { try { ...

    利用Spring定时发送email

    这个"利用Spring定时发送email"的项目,包含了完整的jar包并经过测试,确保了功能的可行性。下面我们将深入探讨如何在Spring中设置定时发送电子邮件以及相关的关键知识点。 首先,我们需要在Spring的配置文件中启用...

    Spring发EMail的很好学习实例

    spring 对mail的支持是org.springframework.mail.MailSender接口来定义的,其中的 org.springframework.mail.javamail.JavamailSenderImpl这个实现类提供了对javamail的支持,下面简单介绍其用法,首先看下不用注入...

    java spring 整合 email + quartz

    总结来说,Java Spring整合Email与Quartz涉及到的主要知识点有: 1. Spring对Quartz的集成,包括`SchedulerFactoryBean`的配置和Job、Trigger的定义。 2. Quartz Job的创建与执行,以及Trigger的设定。 3. Spring的`...

    Spring Email 发送

    我们将涉及Spring的Java配置和Velocity模板引擎来创建动态邮件内容。 首先,我们需要引入必要的依赖。在Spring项目中,我们通常会添加`spring-context`和`spring-context-support`库,它们包含了处理邮件发送功能的...

    spring-email .zip

    这个名为"spring-email .zip"的压缩包文件显然包含了一个使用Spring Boot实现电子邮件服务的示例项目。接下来,我们将深入探讨Spring Boot如何处理电子邮件发送功能,并通过这个项目可能包含的文件来解析其工作原理...

    自定义 SpringBoot-Starter email-spring-boot-starter.zip

    总的来说,"email-spring-boot-starter"简化了Spring Boot应用的邮件发送功能,通过集成Apache Commons Email库,它支持了多种邮件服务提供商,并且允许发送包含附件的邮件。开发者只需要关注邮件的内容和接收者,...

    Spring 实现 定时 发送EMAIL

    然后在代码中,你可以通过Spring的依赖注入来获取JavaMailSender实例,并使用它发送邮件: ```java @Component public class EmailService { private final JavaMailSender javaMailSender; private final ...

    Spring 发送 Email & FAQ

    首先,我们来详细了解一下Spring发送Email的核心概念。 1. **Spring的JavaMailSender接口** Spring提供了一个`JavaMailSender`接口,该接口用于发送电子邮件。它定义了几个方法,如`send(MimeMessagePreparator ...

    简单学习使用Spring+Velocity发送邮件

    本教程将围绕如何使用Spring框架与Velocity模板引擎来实现邮件发送功能进行详细讲解。 首先,让我们理解Spring框架的邮件发送服务。Spring提供了`JavaMailSender`接口,该接口提供了发送邮件的基本方法,如`send...

    SpringMail发邮件

    SpringMail是Spring框架的一个扩展,它为Java应用提供了一个简单且强大的邮件发送功能。通过集成SpringMail,开发者可以轻松地在应用程序...SpringMail提供了丰富的功能来满足这些需求,是Java应用发送邮件的首选工具。

    Spring email 發送郵件

    这篇博客文章“Spring email 发送邮件”深入探讨了如何利用Spring来发送电子邮件,下面将详细解释相关知识点。 首先,要使用Spring发送邮件,我们需要引入相关的依赖。在Maven项目中,可以在pom.xml文件中添加...

    Spring mvc 发送邮件功能

    在Spring MVC框架中,实现邮件发送功能通常涉及配置Spring的JavaMailSender接口和使用模板引擎如FreeMarker来创建动态邮件内容。以下是一个详细的步骤指南: 1. **依赖库**: - `javax.mail`:这是Java邮件API的...

    spring mail 发送html

    在IT行业中,Spring框架是一个广泛...最后,压缩包中的"SpringEmail2.rar"和"SpringEmail1.rar"可能包含了示例代码、配置文件或其他相关资源,供你参考和实践。请确保解压并查看这些文件以获取更深入的理解和实践经验。

Global site tag (gtag.js) - Google Analytics