Java中Spring发送邮件实现与用中文发件人昵称

百度找了半天发现问题关键在于使用固定的格式来填充From属性,如下:

 代码如下 复制代码

// 设置收件人,寄件人
String nick = javax.mail.internet.MimeUtility.encodeText("您的昵称");
messageHelper.setFrom(new InternetAddress(nick + " <service@caomeishuo.com>"));
messageHelper.setTo(toMail);
messageHelper.setSubject(subject);

全部实例代码

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(
                "

Hello! Spring!"
                + "
", 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(
            "

Hello! Spring!"
            + "
", true);
      
        FileSystemResource file =
                new FileSystemResource(
                           new File("d:/test.rar"));
        messageHelper.addAttachment("test.rar", file);
       
               senderImpl.send(mailMessage);
      
        System.out.println("OK");
    }
}

4、用注入的方式来配置邮件,和之前的差不多拉
 
  smtp.xxx.com

 

   

   true

 

你的Email地址

你的Email密码

收件人地址

 

你的地址

 

A Spring Mail sender

 

上面的配置好以后就可以直接发送了, 看看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 {

 
  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();
  }
  }

时间: 2024-09-02 18:04:55

Java中Spring发送邮件实现与用中文发件人昵称的相关文章

Java中Spring获取bean方法小结_java

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,如何在程序中获取Spring配置的bean呢? Bean工厂(com.springframework.beans.factory.BeanFactory)是Spring框架最核心的接口,它提供了高级IoC的配置机制.BeanFactory使管理不同类型的Java对象成为可能,应用上下文(com.springframework.context.ApplicationContext)建立在BeanFactory基础之上,提供

java中spring security的remember me异常解决办法

 想想也不可能,网络中不会时不时出现cookie theft攻击吧.看了官方文档,也没给出解释,后来在oschina看到一篇分析的文章,才明白其中的缘由,文章<是谁动了我的cookie?Spring Security自动登录功能开发经历总结>. 从这篇文章的分析结合spring secutiy的源码来看,在每次持久化登录校验token完毕之后,会更新token的值并写入cookie.而token的校验是通过加密处理写入cookie中的字符串与持久化存储的token做对比看是否一致来判断登录信息

java中编码问题导致ajax提交中文乱码

ajax碰到过两问题,一个是时间问题,一个是中文乱码问题. 因为项目都是在谷歌浏览器做的. 所以一直没有发现别的浏览器问题, 测试的时候才发现ie,360 等出现点击ajax所在的方法失效 刚开始一直以为是js不兼容. 调试下发现是前台传值发现乱码, 坑.. 然后 把中文先转码 最后后台再解码 就可以了.. 下面是决解方法 前台  url: "/yq1012/Ajax.php?name="+encodeURI(encodeURI(name)) 后台   name= java.net.U

JAVA中 Spring定时器的两种实现方式_java

目前有两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz. 1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import java.util.TimerTask; public class EmailReportTask extends TimerTask{ @Override public void run() { ... } } 在Spring定义 ... 配置Spring定时器 <bean id=&quo

java中spring集成mybatis的使用方法

在际项目中,通常会用 spring 这个沾合剂来管理 datasource 等.充分利用spring 基于接口的编程,以及aop ,ioc 带来的方便.用spring 来管理 mybatis 与管理hibernate 有很多类似的地方.今天的重点就是数据源管理以及 bean的配置. 首先对前面的工程结构做一点改变,在src_user源代码目录下建立文件夹config ,并将原来的 mybatis 配置文件 Configuration.xml 移动到这个文件夹中, 并在config 文家夹中建立

java中 spring 定时任务 实现代码_java

复制代码 代码如下: import org.apache.log4j.*;public class TaskJob {       public static Logger log = Logger                     .getLogger(TaskJob.class);       public void SayHello() {              // TODO Auto-generated method stub              try {      

Java中Spring 基本配置学习笔记

1.下载 spring 框架 http://www.springsource.org/download/community 2.将spring lib目录下的这些包拷贝到我们应用的lib中 commons-logging.jar spring-beans-4.0.0.M1.jar spring-context-4.0.0.M1.jar spring-core-4.0.0.M1.jar spring-expression-4.0.0.M1.jar 3.建立一个 bean 类  代码如下 复制代码

java中Spring jdbc批量保存数据例子

数据list:list.add(bcHistory); 批量插入:  代码如下 复制代码 try {     jt.batchUpdate(     "insert into b_chat_history (id,from_phone,from_user,to_phone,to_user,type,msg,url,thumb,length,timestamp) value (?,?,?,?,?,?,?,?,?,?,?)",     new BatchPreparedStatementS

java中Spring MVC文件上传的例子

首先需要配置是加入两个 jar包: commons-fileupload-1.2.2.jar commons-io-2.1.jar 1.    文件配置 SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们首先要配置MultipartResolver来明确告诉DispatcherServlet如何处理MultipartRequest <bean id="multipartResolver" class="org.springframework