Java发送邮件详解

Java发送邮件详解

本期我们学习Java如何发送邮件,Java发送邮件是以后工作较为常用的一个Java技能,想Web的邮箱验证、邮件提醒等功能,后期我也会编写一个教务的成绩提醒系统,其中,提醒的功能就是使用邮件来实现的。

1、了解邮件服务器和传输协议

  • 有过Linux基础或计算机网络基础的同学都知道,要在网络上实现邮件传输,就要有专门的邮件服务器,也就是SMTP服务器,他是计算机网络中的邮局,主要负责收发邮件。
  • 要想实现邮件传输,那么我们首先要知道邮局的地址,也就是SMTP地址,这样我们才能顺利的把邮件发出去。SMTP地址一般为smtp.xx.com,例如腾讯的:smtp.qq.com、163的:smtp.16.com。
  • 有了邮局的地址,那么我们下一部是怎么把邮件递给邮局,这里就需要用到SMTP传输协议,SMTP传输协议的作用,就是帮我们,把邮件投递给邮局,然后邮局再将邮件,发到目标的手中。

2、事前准备

了解完SMTP传输协议之后,我们开始搭建项目。

导入Jar包

Java为SMTP传输协议开发了一个工具Jar包:mail包,我们要使用SMTP传输协议,就要先导入Jar包。这里我们创建的是Maven项目,所以直接再pom.xml中配置:

<dependencies>
    <dependency>
         <groupId>javax.mail</groupId>
          <artifactId>mail</artifactId>
          <version>1.5.0-b01</version>
     </dependency>
</dependencies>

获取邮箱授权码

邮箱授权码是使用SMTP时的凭证,首先,我们登录发送邮箱的账号,以qq邮箱为例,依次打开设置、账户。
在这里插入图片描述
然后找到SMTP服务,开启SMTP服务后,获取授权码:
在这里插入图片描述

3、编写Java代码

我们直接通过实例化一个Properties对象,然后再Properties对象中配置发件邮箱的信息。
此处注意事项:

  • 在SMTP协议时,所输入的密码并非账号密码,而为授权码
  • 每个邮箱提供商的端口号可能不同,在设置中查看相应端口号,一般为465
  • 设置收件人时,可以指定一个用户或多个用户:
    如果使用setRecipient只能设置一个收件人,InternetAddress为参数
    如果使用setRecipients可以设置多个收件人,InternetAddress为参数
public static void main(String[] argv) throws Exception{
        Properties properties = new Properties();
        properties.put("mail.transport.protocol", "smtp");// 连接协议
        properties.put("mail.smtp.host", "smtp.qq.com");// 主机名
        properties.put("mail.smtp.port", 465);// 端口号
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.ssl.enable", "true");// 设置是否使用ssl安全连接 ---一般都使用
        properties.put("mail.debug", "true");// 设置是否显示debug信息 true 会在控制台显示相关信息
        // 得到回话对象
        Session session = Session.getInstance(properties);
        // 获取邮件对象
        Message message = new MimeMessage(session);
        // 设置发件人邮箱地址
        message.setFrom(new InternetAddress("i@liuxincode.cn"));
        // 设置收件人邮箱地址
        //如果使用setRecipient只能设置一个收件人,InternetAddress为参数
        //如果使用setRecipients可以设置多个收件人,InternetAddress为参数
        message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress("o@liuxincode.cn")});
        // 设置邮件标题
        message.setSubject("你好");
        // 设置邮件内容
        message.setText("你好,刘欣的代码笔记欢迎您,网址:https://www.liuxincode.cn");
        // 得到邮差对象
        Transport transport = session.getTransport();
        // 连接自己的邮箱账户
        transport.connect("i@liuxincode.cn", "xxxxxxxxxxxxx");// password为stmp授权码
        // 发送邮件
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    }

编译后成功收取到邮件:
在这里插入图片描述
原文地址:https://www.liuxincode.cn/articles/2019/12/26/1577332433630.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值