spring使用e-mail

邮件协议有哪些?

常用的电子邮件协议有SMTP、POP3、IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别通过TCP端口25、110和143建立连接。

SMTP协议

SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。-百度百科

参考:https://baike.baidu.com/item/SMTP/175887?fromtitle=SMTP%E5%8D%8F%E8%AE%AE&fromid=421587

POP3协议

POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。是TCP/IP协议族中的一员,由RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。

参考:https://baike.baidu.com/item/POP3/175122

IMAP4 协议

IMAP4(Internet Message Access Protocol 4) 即 交互式数据消息访问协议第四个版本。IMAP协议是由斯坦福大学的Mark Crispin教授在1986年开发的,后期版本是华盛顿州立大学进行开发的,IMAP4是TCP/IP协议族中的一员,现在的版本是“IMAP第四版第一次修订版”(IMAP4rev1)。

邮件配置(基于163)

需要在163授权密码,这个密码是以下email.password

代码下载:https://gitee.com/hong99/spring/issues/I1N1DF

源码实现

    项目目录

email.properties

email.smtp=smtp.163.com
email.username=besthong999@163.com
email.to=718231657@qq.com
email.password=xxx

com.hong.email.AppConfig

package com.hong.email;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.mail.MailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;

@Configuration
@ComponentScan(basePackages = { "com.hong.email" })
@PropertySource(value = "classpath:email.properties",ignoreResourceNotFound = false)
public class AppConfig {

    @Autowired
    private Environment environment;


    public static  String FROM ;
    public static  String TO;
    public static  String SUBJECT = "Spring Email Test";
    public static  String TEXT = "Hello i am hong";
    public static  String FILE_PATH = "spring_email/image/test.png";

   /**
    * 配置邮件发送器
    * @return
    */
    @Bean
    public MailSender mailSender() {
        FROM= environment.getProperty("email.username");
        TO= environment.getProperty("email.to");
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost(environment.getProperty("email.smtp"));//指定用来发送Email的邮件服务器主机名
        mailSender.setPort(25);//默认端口,标准的SMTP端口
        mailSender.setUsername(environment.getProperty("email.username"));//用户名
        mailSender.setPassword(environment.getProperty("email.password"));//密码
        return mailSender;
    }

}

com.hong.email.SpringMailTest

package com.hong.email;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;

/**
 *
 * 功能描述:邮件测试
 *
 * @param:
 * @return:
 * @auther: csh
 * @date: 2020/11/3 18:15
 */
@RunWith(SpringJUnit4ClassRunner.class)
@PropertySource("email.properties")
@ContextConfiguration(classes = { AppConfig.class })
public class SpringMailTest extends AppConfig{


   @Autowired
   private JavaMailSender mailSender;

   /**
    * 发送文本邮件
    */
   @Test
   public void sendSimpleEmail() {
      SimpleMailMessage message = new SimpleMailMessage();// 消息构造器
      message.setFrom(FROM);// 发件人
      message.setTo(TO);// 收件人
      message.setSubject(SUBJECT);// 主题
      message.setText(TEXT);// 正文
      mailSender.send(message);
      System.out.println("邮件发送完毕");
   }

   /**
    * 发送带有附件的email
    * 
    * @throws MessagingException
    */
   @Test
   public void sendEmailWithAttachment() throws MessagingException {
      MimeMessage message = mailSender.createMimeMessage();
      MimeMessageHelper helper = new MimeMessageHelper(message, true);
      helper.setFrom(FROM);// 发件人
      helper.setTo(TO);// 收件人
      helper.setSubject(SUBJECT);// 主题
      helper.setText(TEXT);// 正文

      // 添加附件
      FileSystemResource image = new FileSystemResource(new File(FILE_PATH));
      System.out.println(image.exists());

      // 添加附加,第一个参数为添加到Email中附件的名称,第二个人参数是图片资源
      helper.addAttachment("test.png", image);
      mailSender.send(message);
      System.out.println("邮件发送完毕");
   }

   /**
    * 发送富文本内容的Email
    * 
    * @throws MessagingException
    */
   @Test
   public void sendRichEmail() throws MessagingException {
      MimeMessage message = mailSender.createMimeMessage();
      MimeMessageHelper helper = new MimeMessageHelper(message, true);
      helper.setFrom(FROM);// 发件人
      helper.setTo(TO);// 收件人
      helper.setSubject(SUBJECT);// 主题
      helper.setText("<html><body><h4>Hello hong!</h4>"
            + "Welcome to <a href='https://www.baidu.com'>baidu!</a></body></html>", true);
      
      // 添加附件
      FileSystemResource image = new FileSystemResource(new File(FILE_PATH));
      System.out.println(image.exists());

      // 添加附加,第一个参数为添加到Email中附件的名称,第二个人参数是图片资源
      helper.addAttachment("test.png", image);
      mailSender.send(message);
      System.out.println("邮件发送完毕");
   }

}

结果:

文本文件

附件测试

带a标签

代码下载:https://gitee.com/hong99/spring/issues/I1N1DF

最后

spring很好的整合了email的相关协议,并且提供的api也很容易上手,可以在这个基础上完善自己发送邮件的功能或后台,如有疑问可以留言讨论或私聊。

参考文章:

https://www.jianshu.com/p/13b3d22dfdac

https://docs.spring.io/spring-framework/docs/current/reference/html/integration.html#mail

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值