同步发送邮件总结

同步发送邮件总结


1,调用邮件工具类实现邮件发送
   1)依赖:
   <dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.2</version>
</dependency>
     2)实体类:
     package com.ielpm.pojo;
     import javax.mail.Authenticator;
     import javax.mail.PasswordAuthentication;
     /**
      *密码验证器实体类
      */
     public class MyAuthenticator extends Authenticator {
   String userName = null;
   String password = null;

   public MyAuthenticator() {
   }

   public MyAuthenticator(String username, String password) {
  this.userName = username;
  this.password = password;
   }


   protected PasswordAuthentication getPasswordAuthentication() {
  return new PasswordAuthentication(userName, password);
   }
      }
       /**
        *封装待发送邮件信息和链接邮件服务器信息实体类 
        */
      package com.ielpm.pojo;
      import java.io.Serializable;
      import java.util.Arrays;
      import java.util.Properties;
      
      public class MailSenderInfo implements Serializable {

    private static final long serialVersionUID = -4482681249475025351L;
    // 发送邮件的服务器的IP
    private String mailServerHost;
         // 发送邮件的服务器的端口
    private String mailServerPort = "25";
    // 邮件发送者的地址
    private String fromAddress;
    // 邮件接收者的地址
    private String toAddress;
    // 登陆邮件发送服务器的用户名
    private String userName;
         //登陆邮件发送服务器的用密码
    private String password;
    // 是否需要身份验证
    private boolean validate = false;
    // 邮件主题
    private String subject;
    // 邮件的文本内容
    private String content;
    // 邮件附件的文件名格式说明:数组存放多个附件,每个附件String用逗号隔开,前面实际路径,后             面重名名{"d:\\ICBCb2b.txt,ICBCb2b.txt"}
    private String[] attachFileNames;
    /**
     * 获得邮件会话属性
     */
    public Properties getProperties() {
   Properties p = new Properties();
   p.put("mail.smtp.host", this.mailServerHost);
   p.put("mail.smtp.port", this.mailServerPort);
   p.put("mail.smtp.auth", validate ? "true" : "false");
   return p;
    }

    public String getMailServerHost() {
return mailServerHost;
    }

    public void setMailServerHost(String mailServerHost) {
this.mailServerHost = mailServerHost;
    }

    public String getMailServerPort() {
  return mailServerPort;
    }
    public void setMailServerPort(String mailServerPort) {
      this.mailServerPort = mailServerPort;
    }

    public boolean isValidate() {
  return validate;
    }

    public void setValidate(boolean validate) {
  this.validate = validate;
    }

    public String[] getAttachFileNames() {
   return attachFileNames;
    }

    public void setAttachFileNames(String[] fileNames) {
  this.attachFileNames = fileNames;
    }

    public String getFromAddress() {
return fromAddress;
    }

    public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
    }

    public String getPassword() {
return password;
    }

public void setPassword(String password) {
this.password = password;
}

public String getToAddress() {
return toAddress;
}

public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getSubject() {
return subject;
}


public void setSubject(String subject) {
this.subject = subject;
}

public String getContent() {
return content;
}

public void setContent(String textContent) {
this.content = textContent;
}

@Override
public String toString() {
  return "MailSenderInfo [mailServerHost=" + mailServerHost + ", mailServerPort=" + mailServerPort + ", fromAddress=" + fromAddress + ", toAddress=" + toAddress + ", userName=" + userName + ", password="+ password + ", validate=" + validate + ", subject=" + subject + ", content=" + content+ ", attachFileNames=" + Arrays.toString(attachFileNames) + "]";
}
}

3)工具类:
/**  
 * All rights Reserved, Designed By www.ielpm.com
 * @Title:  SimpleMailSender.java   
 * @Package com.ielpm.service   
 * @Description:    TODO(发送邮件的工具类)   
 * @author: renpl   
 * @date:   2018年5月28日 下午2:47:12   
 * @version V1.0 
 */  
package com.ielpm.service;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import com.ielpm.pojo.MailSenderInfo;
import com.ielpm.pojo.MyAuthenticator;
/**   
 * @ClassName:  SimpleMailSender   
 * @Description:TODO(简单邮件(不带附件的邮件)发送器    )   
 * @author: renpl
 * @date:   2018年5月28日 下午2:47:12   
 *     
 * @Copyright: 2018 www.ielpm.com . All rights reserved. 
 * 
 */
public class SimpleMailSender {
    
/**  
  * 以文本格式发送邮件    
  * @param mailInfo 待发送的邮件的信息    
  */      
    public  boolean sendTextMail(MailSenderInfo mailInfo) {      
      //1. 判断是否需要身份认证      
      MyAuthenticator authenticator = null;    
      //2.邮件会话属性  
      Properties pro = mailInfo.getProperties();     
      if (mailInfo.isValidate()) {      
      // 3.如果需要身份认证,则创建一个密码验证器      
        authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());      
      }     
      // 4.根据邮件会话属性和密码验证器构造一个发送邮件的session      
      Session sendMailSession = Session.getDefaultInstance(pro,authenticator);      
      try {      
          //5. 根据session创建一个邮件消息   ,并进行相关设置   
          Message mailMessage = new MimeMessage(sendMailSession);      
          // 创建邮件发送者地址      
          Address from = new InternetAddress(mailInfo.getFromAddress());      
          // 设置邮件消息的发送者      
          mailMessage.setFrom(from);      
          // 创建邮件的接收者地址,并设置到邮件消息中      
          Address to = new InternetAddress(mailInfo.getToAddress());      
          mailMessage.setRecipient(Message.RecipientType.TO,to);      
          // 设置邮件消息的主题      
          mailMessage.setSubject(mailInfo.getSubject());      
          // 设置邮件消息发送的时间      
          mailMessage.setSentDate(new Date());      
          // 设置邮件消息的主要内容      
          String mailContent = mailInfo.getContent();      
          mailMessage.setText(mailContent);      
            
          // 6.发送邮件      
          Transport.send(mailMessage);     
          return true;      
      } catch (MessagingException ex) {      
          ex.printStackTrace();      
      }      
      return false;      
    }      
         
    /**     
      * 以HTML格式发送邮件    
      * @param mailInfo 待发送的邮件信息    
      */      
    
public  boolean sendHtmlMail(MailSenderInfo mailInfo) {
// 判断是否需要身份认证
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
// 如果需要身份认证,则创建一个密码验证器
if (mailInfo.isValidate()) {
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
//Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
Session sendMailSession = Session.getInstance(pro, authenticator);
sendMailSession.setDebug(true);
try {
// 根据session创建一个邮件消息
Message mailMessage = new MimeMessage(sendMailSession);
// 创建邮件发送者地址
Address from = new InternetAddress(mailInfo.getFromAddress());
// 设置邮件消息的发送者
mailMessage.setFrom(from);
// 创建邮件的接收者地址,并设置到邮件消息中
Address to = new InternetAddress(mailInfo.getToAddress());
// Message.RecipientType.TO属性表示接收者的类型为TO
mailMessage.setRecipient(Message.RecipientType.TO, to);
// 设置邮件消息的主题
mailMessage.setSubject(mailInfo.getSubject());
// 设置邮件消息发送的时间
mailMessage.setSentDate(new Date());
// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
Multipart mainPart = new MimeMultipart();
// 创建一个包含HTML内容的MimeBodyPart
BodyPart html = new MimeBodyPart();
// 设置HTML内容
html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
mainPart.addBodyPart(html);
// 将MiniMultipart对象设置为邮件内容
mailMessage.setContent(mainPart);
// 发送邮件
Transport.send(mailMessage);
return true;
} catch (MessagingException ex) {
ex.printStackTrace();
}
return false;
}


}


4)测试类:
package com.ielpm.test;
import org.junit.Before;
import org.junit.Test;
import com.ielpm.pojo.MailSenderInfo;
import com.ielpm.service.SimpleMailSender;


public class TestSimpleMailSend {

private SimpleMailSender mailSender;

@Before
public void init() {
mailSender = new SimpleMailSender();
}

@Test
public void simpleMailSendTest() {

MailSenderInfo mailInfo = new MailSenderInfo();
mailInfo.setSubject("同步邮件发送");
mailInfo.setContent("您好:这是通过同步邮件方式发送文本格式邮件");
mailInfo.setFromAddress("13693547470@163.com");
mailInfo.setToAddress("18810491372@163.com");
mailInfo.setUserName("13693547470@163.com");
mailInfo.setPassword("renpl123");
mailInfo.setMailServerHost("smtp.163.com");
mailInfo.setMailServerPort("25");
mailInfo.setValidate(true);
    mailSender.sendHtmlMail(mailInfo);
    //mailSender.sendTextMail(mailInfo);
}
}

  2,spring管理邮件工具类实现邮件发送
   1)pom.xml依赖:
    <!-- 设置公共属性,可以被引用 ${attribute} -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit.version>4.11</junit.version>
    <spring.version>4.0.0.RELEASE</spring.version>
  </properties> 
  <dependencies>
    <!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope> 
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
  </dependencies>
   2)实体类
package com.ielpm.pojo;
public class MailInfo {

private String from;

private String to;

private String subject;

private String content;


public MailInfo(String from, String to, String subject, String content) {
super();
this.from = from;
this.to = to;
this.subject = subject;
this.content = content;
}

public String getFrom() {
return from;
}

public void setFrom(String from) {
this.from = from;
}

public String getTo() {
return to;
}

public void setTo(String to) {
this.to = to;
}

public String getSubject() {
return subject;
}

public void setSubject(String subject) {
this.subject = subject;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}
}


3)配置文件配置 (存放到项目的resources目录下)
config.properties

## SMTP Configuration
mail.host=smtp.163.com
mail.port=25
mail.username=13693547470@163.com
mail.password=renpl123
mail.smtp.auth=true
mail.smtp.timeout=30000
mail.default.from=13693547470@163.com

spring-mail.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans  
           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
           http://www.springframework.org/schema/aop   
           http://www.springframework.org/schema/aop/spring-aop-3.2.xsd  
           http://www.springframework.org/schema/tx  
           http://www.springframework.org/schema/tx/spring-tx-3.2.xsd  
           http://www.springframework.org/schema/context  
           http://www.springframework.org/schema/context/spring-context-3.2.xsd"
default-autowire="byName" default-lazy-init="false">

<!-- Spring提供的发送电子邮件的高级抽象类 ,此类实例用于封装登录邮件服务器的信息-->
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}" />
<property name="username" value="${mail.username}" />
<property name="password" value="${mail.password}" />
<property name="defaultEncoding" value="UTF-8"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
</props>
</property>
</bean>
    <!--简单的邮件发送,不发附件-->
<bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">
<property name="from">
<value>${mail.default.from}</value>
</property>
</bean>
</beans>


spring-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans  
           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
           http://www.springframework.org/schema/aop   
           http://www.springframework.org/schema/aop/spring-aop-3.2.xsd  
           http://www.springframework.org/schema/tx  
           http://www.springframework.org/schema/tx/spring-tx-3.2.xsd  
           http://www.springframework.org/schema/context  
           http://www.springframework.org/schema/context/spring-context-3.2.xsd"
default-autowire="byName" default-lazy-init="false">

<!-- 读入配置属性文件 -->
<context:property-placeholder location="classpath:config.properties" />

<!-- 注解配置 -->
<context:annotation-config />

<!-- 扫描包起始位置 -->
<context:component-scan base-package="com.ielpm" />

<import resource="classpath:spring-mail.xml" />
</beans>

4)测试类

package com.ielpm.test;
import org.springframework.util.StringUtils;
import com.ielpm.pojo.MailInfo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@ContextConfiguration(locations= {"classpath:spring-context.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class TestSpringSimpleMailSend {

@Autowired
private JavaMailSender javaMailSender;

@Autowired
private SimpleMailMessage simpleMailMessage;

@Test
public void simpleMailSend() {

MailInfo mail = new MailInfo("13693547470@163.com","18810491372@163.com","spring发送邮           件","您好! 老孙");
if(!StringUtils.isEmpty(mail.getFrom())) {
simpleMailMessage.setFrom(mail.getFrom()); 
}else {
simpleMailMessage.setFrom(simpleMailMessage.getFrom()); 
}
simpleMailMessage.setTo(mail.getTo()); 
simpleMailMessage.setSubject(mail.getSubject());
simpleMailMessage.setText(mail.getContent());

javaMailSender.send(simpleMailMessage);
}
}













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值