Java发送邮箱


预备知识

  • 邮箱服务器,提供邮件服务
  • STMP协议(Simple Mail Transfer Protocol),用于从源地址到目的地址传输邮件的规范,默认25端口
  • POP3协议(Post Office Protocol 3),接收电子邮件,远程管理邮件的协议,默认110端口
  • 发送邮件的过程

导包

这里使用maven

<!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail -->
<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>

编写工具类

/*
 * @author Howl
 * @date 2020/1/6
 * @version 1.0
 * @description 邮件工具类
 */
public class MailUtils {
    
    //变量提升
    private static Session session;
    
    //静态代码块
    static{
        /*
         *  Properties配置文件的读取类
         *  host,SMTP主机名
         *  port,端口号
         *  auth,用户认证
         *  class,规定要使用SSL加密套接字
         *  
         *  Authenticator认证器
         *  授权邮箱,授权码(文末有解释)
         *  应用程序创建会话时注册该子类的实例并调用getPasswordAuthentication,返回一个PasswordAuthentication
         *  所以重写getPasswordAuthentication返回一个该类的对象,该类构造方法PasswordAuthentication(String userName, char[] password)
         *  
         *  session邮件会话
         *  收集邮件API使用的属性和默认值,单个默认会话可以由桌面上的多个应用程序共享,也可以创建未共享的会话
         */
        
        Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.qq.com"); 
        props.put("mail.smtp.port", "465");         
        props.put("mail.smtp.auth", "true");        
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        
        Authenticator authenticator = new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("授权邮箱","授权码");
            }
        };
        
        session = Session.getInstance(props, authenticator);
        
    }
    
    /*
     * @param mailAddress,收件人
     * @param subject,标题
     * @param text,内容
     * 
     */
    public static void sendMail(String mailAddress,String subject,String text) throws AddressException, MessagingException{
        /*
         * message邮件载体(需要运行时环境)
         * setFrom,发件人(参数是InternetAddress,属于Java的网络编程)
         * setRecipient,收件人(第一个TO--发送,后面是收件人)
         * setSubject,设置标题
         * send,静态发送邮件
         */
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress("1111111111@qq.com"));
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailAddress));
        message.setSubject(subject);
        message.setText(text, "utf-8");
        Transport.send(message);
        
    }

}

发送

public class MailTest {
    
    public static void main(String[] args) throws AddressException, MessagingException {
        
        MailUtils.sendMail("1111111111@qq.com", "9527", "去吉野家吗?");
        
    }
}

收件

授权邮箱,授权码

以QQ邮箱为例,设置-->账号 找到并开启对应服务

授权邮箱就是QQ邮箱,授权码在开启服务后提示


JavaxMail官方文档

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mysql事务

    简单来说,事务就是操作一系列事件,要么全部完成,要么全部不完成。典型例子为银行转账

    Howl
  • RabbitMQ入门

    笔者经常能看到MQ这个词,知道其作为消息队列,但始终没有接触过,现在刚好有个机会(不知道在抢答系统中能不能用上),首先当然要知道MQ有什么作用:

    Howl
  • SpringMVC入门(一)

    Howl
  • 分布式系统中的定时任务全解(四)--补充

    这个系列计划里面是只有3篇,但是在后续使用的过程中发现了新的问题,以及发现了一个很重要但是没有写上的部分。

    九州暮云
  • Springsecurity之标签解析 原

        在Springsecurity源码的config模块的resources/META-INF下有spring.handlers和spring.schema...

    克虏伯
  • [福利]坚持管家签到60天领取QQ年费超级会员

    Youngxj
  • 【妙趣科学】社交网络如何改变我们的友谊

    美国前总统伍德罗·威尔逊说过:“友谊是令世界团结的唯一胶合剂。”一个世纪后的今天,这种胶合剂是否已经在快节奏、高科技、城市化的生活中失去了效力? 这一点可以从美...

    机器人网
  • Spring Data JPA入门教程

    Spring Data : Spring 的一个子项目。用于简化数据库访问,支持NoSQL 和 关系数据存储。 下面给出SpringData 项目所支持 N...

    用户1208223
  • bitset中_Find_first()与_Find_next()函数

    输出结果为233 1001,也就是说如果某个元素之后没有元素的话会返回bitset的大小

    attack
  • MySQL查询:EHR中某时间范围过生日的员工

    2、页面渲染的时候,默认出现近七天内要过生日的人。并发邮件提醒(发邮件提醒不在这里完成,是在其他模块,这里只描述如何查询生日的人)。

    赵腰静

扫码关注云+社区

领取腾讯云代金券