JavaMail实现发送邮件(QQ邮箱)

 更新时间:2022年08月11日 10:26:52   作者:失落的叶  
这篇文章主要为大家详细介绍了JavaMail实现发送邮件(QQ邮箱),文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了JavaMail实现发送邮件的具体代码,供大家参考,具体内容如下

用的qq邮箱,需要去邮箱设置那边开一下stmp服务啥的获得下面要用到的密码,具体开服务自己百度,这边不截图了。

代码如下:导包和工具类,可用!

一、导这个包

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

二、工具类封装成对象

import lombok.Data;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailHelper
{
    /**
     * 邮件服务器主机名。
     */
    private static String HOST_NAME;

    private String sendMailUrl ;
    private String receiveMailUrl;
    /**
     * IMAP/SMTP服务的密码 去qq邮箱开的。 几个月前的失效了还是蛮奇怪的 2021年8月5日21:33:36
     */
    private String servicePassword;


    static {
        //默认直接qq的吧
        HOST_NAME = "smtp.qq.com";
    }
    public MailHelper(String sendMailUrl,String receiveMailUrl,String servicePassword){
        this.sendMailUrl=sendMailUrl;
        this.receiveMailUrl=receiveMailUrl;
        this.servicePassword=servicePassword;
    }

    public  void sendSimpleMail(Mail mail) throws Exception {
        Properties prop = new Properties();
         设置邮件服务器主机名
        prop.setProperty("mail.host", "smtp.qq.com");
        // 发送邮件协议名称
        prop.setProperty("mail.transport.protocol", "smtp");
        prop.setProperty("mail.smtp.auth", "true");
        // 使用JavaMail发送邮件的5个步骤
        // 1、创建session 根据配置创建会话对象, 用于和邮件服务器交互
        Session session = Session.getInstance(prop);
        // 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
        session.setDebug(true);
        // 2、通过session得到transport对象
        Transport ts = session.getTransport();
        // 3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。

        // 注:这边host必须填写smtp.qq.com
        // 而不是你qq邮箱账号如1741049@qq.com,否则报错host名unkonwn。
        // Host:邮件服务器主机名
        ts.connect(HOST_NAME, receiveMailUrl, servicePassword);
        // 4、创建邮件
        Message message = createSimpleMail(session, mail.getTitle(), mail.getContent());
        // 5、发送邮件
        ts.sendMessage(message, message.getAllRecipients());
        ts.close();
    }
    
    private MimeMessage createSimpleMail(Session session, String title, String content) throws Exception {
        // 创建邮件对象
        MimeMessage message = new MimeMessage(session);
        // 指明邮件的发件人
        message.setFrom(new InternetAddress(receiveMailUrl));
        // 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiveMailUrl));
        // 邮件的标题
        message.setSubject(title);
        // 邮件的文本内容
        message.setContent(content, "text/html;charset=UTF-8");
        // 返回创建好的邮件对象
        return message;
    }
    @Data
    public static class Mail{
        private String title;
        /**
         * 正文
         */
        private String content;
        public Mail(){

        }
        public Mail(String title,String content){
            this.title=title;
            this.content=content;
        }

    }
}

测试类:

package com.forever.junittest;

import com.forever.gitfund.util.MailHelper;
import com.forever.gitfund.util.MailHelper.Mail;
import org.junit.Test;

public class TestMailHelper {

    @Test
    public void test() throws Exception {
        String qq = "xx@qq.com";
        String send = qq;
        MailHelper mailHelper = new MailHelper(qq,send,"xxxxx");
        Mail mail = new Mail();
        String title = "我的第一封邮件";
        String content = "这是我的第一封邮件 from idea";
        mail.setTitle(title);
        mail.setContent(content);
        mailHelper.sendSimpleMail(mail);
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java多线程之原子类解析

    Java多线程之原子类解析

    这篇文章主要介绍了Java多线程之原子类解析,Java原子类是一种多线程编程中常用的工具,用于实现线程安全的操作,它们提供了一种原子性操作的机制,确保多个线程同时访问共享变量时的数据一致性,需要的朋友可以参考下
    2023-10-10
  • java10下编译lombok注解代码分享

    java10下编译lombok注解代码分享

    这篇文章给大家分享了java10下编译lombok注解的代码,有兴趣的朋友可以测试以下,学习参考下吧。
    2018-04-04
  • springboot中如何使用openfeign进行接口调用

    springboot中如何使用openfeign进行接口调用

    这篇文章主要介绍了springboot中如何使用openfeign进行接口调用问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java org.w3c.dom.Document 类方法引用报错

    Java org.w3c.dom.Document 类方法引用报错

    这篇文章主要介绍了Java org.w3c.dom.Document 类方法引用报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • JPA配置详解之jpaProperties用法

    JPA配置详解之jpaProperties用法

    这篇文章主要介绍了JPA配置详解之jpaProperties用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Jmeter实现Base64编码的两种方式

    Jmeter实现Base64编码的两种方式

    这篇文章主要介绍了Jmeter实现Base64编码,大家都知道Jmeter实现Base64编码有两种方式,本文通过图文并茂的形式把每种方法给大家介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • Java实现图片上文字内容的动态修改的操作步骤

    Java实现图片上文字内容的动态修改的操作步骤

    在数字图像处理领域,Java提供了强大的库来处理图片,包括读取、修改和写入图片,如果你需要在Java应用程序中修改图片上的文字内容,可以通过图像处理技术来实现,这篇博文将介绍如何使用Java实现图片上文字内容的动态修改,需要的朋友可以参考下
    2024-07-07
  • Java异步编程工具Twitter Future详解

    Java异步编程工具Twitter Future详解

    这篇文章主要介绍了Java异步编程工具Twitter Future详解,包括基本用法示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Spring boot自定义http反馈状态码详解

    Spring boot自定义http反馈状态码详解

    这篇文章主要给大家介绍了Spring boot自定义http反馈状态码的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-06-06
  • 详解SpringSecurity处理会话管理和注销功能

    详解SpringSecurity处理会话管理和注销功能

    本文介绍了详解SpringSecurity处理会话管理和注销功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01

最新评论