IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java 发送邮件 (一) -> 正文阅读

[Java知识库]java 发送邮件 (一)

今天攻城狮,攻克一下java发邮件~~~

基本很多项目都会遇到,再遇到比较抠搜的公司,发短信有成本不考虑,那就只能搞个0费用的发邮件功能了

其实很简单, 不多叙述了,赶末班车? 直接上代码??

look? ? here? .....? ?

默认是maven项目?

首先在pom里引入依赖,如下:

        <!--邮件依赖 -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.5.0-b01</version>
        </dependency>

然后? 创建? ?SendMailKit.java 代码如下 :

package com.weryou.email.kit;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;

/**
 * @ClassName SendMailKit
 * @Description
 * @Author weryou
 * @Date 2021/7/13 20:32
 * @Version 1.0
 **/
public final  class SendMailKit {

    private static final Logger log = LoggerFactory.getLogger(SendMailKit.class);
    //发件人的 邮箱 和 密码(替换为自己的邮箱和密码)
    //有的邮箱服务器为了增加邮箱本身密码的安全性,给 SMTP 客户端设置了独立密码(称为“授权码”),
    //对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。
    //private static String myEmailAccount = "xxxxxx@163.com";
    //private static String myEmailPassword = "abcfheeff";//授权码  并且需要开启 POP3/SMTP服务

    private static String myEmailAccount = "xxxxxxx@qq.com";
    private static String myEmailPassword = "fefetedss";//授权码  并且需要 POP3/SMTP服务

    // 发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com
    // 网易126邮箱的 SMTP 服务器地址为: smtp.126.com
    // QQ邮箱的SMTP 服务地址为: smtp.qq.com
    private static String myEmailSMTPHost = "smtp.qq.com";
    // 收件人邮箱(替换为自己知道的有效邮箱 ,多个邮箱用逗号隔开)
    private static String receiveMailAccount = "xxxxx1@qq.com,xxxxx2@qq.com";//多个账号用逗号隔开





    private static Properties  props = new Properties();
    private static Session session = null;
    private static SendMailKit sendMailKit = new SendMailKit();



    private SendMailKit(){
        // 使用的协议(JavaMail规范要求)
        props.setProperty("mail.transport.protocol", "smtp");
        // 发件人的邮箱的 SMTP 服务器地址
        props.setProperty("mail.smtp.host", myEmailSMTPHost);
        // 需要请求认证
        props.setProperty("mail.smtp.auth", "true");
        session = Session.getInstance(props);
        // 设置为debug模式, 可以查看详细的发送 log
        session.setDebug(true);
    }




    public static void main(String[] args) throws Exception {
        String title = "信用卡申请成功";//标题
        String content = "尊敬的weryou先生您好,您申请的平安银行信用卡已审核通过,我们将在3个工作日内寄出,祝您用卡愉快。";//内容


        // 2. 根据配置创建会话对象, 用于和邮件服务器交互
        Session session = Session.getInstance(props);
        // 设置为debug模式, 可以查看详细的发送 log
        session.setDebug(true);
        // 3. 创建一封邮件
        MimeMessage message = createMimeMessage(session, myEmailAccount, receiveMailAccount,title,content);
        // 4. 根据 Session 获取邮件传输对象
        Transport transport = session.getTransport();
        transport.connect(myEmailAccount, myEmailPassword);
        // 6. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
        transport.sendMessage(message, message.getAllRecipients());
        // 7. 关闭连接
        transport.close();
    }



    /**
     * 创建一封只包含文本的简单邮件
     *
     * @param session     和服务器交互的会话
     * @param sendMail    发件人邮箱
     * @param receiveMail 收件人邮箱
     * @return
     * @throws Exception
     */
    public static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail,String title,String msg) throws Exception {
        // 1. 创建一封邮件
        MimeMessage message = new MimeMessage(session);

        //昵称 ( 中英文都可以  随便写)
        String nickname = "weryou";

        // 2. From: 发件人
        message.setFrom(new InternetAddress(sendMail, nickname, "UTF-8"));

        // 3. To: 收件人(可以增加多个收件人、抄送、密送)

        String[] receiveMails = receiveMail.split(",");
        int i = 0;
        for(String str:receiveMails){
            if(i==0){
                // 设置收件人
                message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(str, str.split("@")[0], "UTF-8"));
            }else{
                // 增加收件人
                message.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress(str, str.split("@")[0], "UTF-8"));
            }
            i++;
        }

        // Cc: 抄送(可选)
        //message.setRecipient(MimeMessage.RecipientType.CC, new InternetAddress("10001@qq.com", "weryou1", "UTF-8"));
        // Bcc: 密送:如果是群发邮件,别人看不到改邮件地址  (可选)
        //message.setRecipient(MimeMessage.RecipientType.BCC, new InternetAddress("10002@qq.com", "weryou2", "UTF-8"));

        // 4、Subject: 邮件主题
        message.setSubject(title, "UTF-8");
        // 5、Content: 邮件正文(可以使用html标签)
        message.setContent(msg, "text/html;charset=UTF-8");
        // 6、设置发件时间
        message.setSentDate(new Date());
        // 7、保存设置
        message.saveChanges();

        return message;
    }

}

请查收您的邮件:

如果报以下错误,无外乎3种可能:

1 smtp 服务没有开启

2 授权码有问题

3 邮件地址不对?

补充 :??

?网易邮箱开启 SMTP?

QQ邮箱开启 SMTP?

敲黑板:无论是网易还是QQ都要记住授权码,这是能否正常发送邮件的关键?

????????????????????????????????????????????????????????End? ? ? 2021年7月13日23:48:05

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 10:44:42  更:2021-07-14 10:45:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/18 12:55:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码