最近工作项目中需要使用到邮件功能,参考网上的文章,实现了一个基于java的邮件发送功能;直接上代码:

1、依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、身份认证bean
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

/**
* 身份认证
*/
public class Auth extends Authenticator {

private String username = "";
private String password = "";

public Auth(String username, String password) {
this.username = username;
this.password = password;
}

@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}
3、邮件发送操作类
import com.mail.java.demo.bean.Auth;

import javax.mail.Message;
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.List;
import java.util.Properties;

/**
* 邮件相关操作类
*/
public class MailUtil {

/**
* 发送邮件
*
* @param user 发件人邮箱
* @param password 授权码(注意不是邮箱登录密码)
* @param host 服务器
* @param port 端口
* @param from 发件人
* @param to 接收者
* @param cc 抄送
* @param subject 邮件主题
* @param content 邮件内容
* @return success 发送成功 failure 发送失败
* @throws Exception
*/
public static String sendMail(String user, String password, String host, String port,
String from, List<String> to, List<String> cc, String subject, String content)
throws Exception {
if (to.isEmpty()) {
return "收件人不能为空";
}

InternetAddress[] toAddress = new InternetAddress[to.size()];
for (int i = 0; i < to.size(); i++) {
toAddress[i] = new InternetAddress(to.get(i));
}
InternetAddress[] ccAddress = new InternetAddress[cc.size()];
for (int i = 0; i < cc.size(); i++) {
ccAddress[i] = new InternetAddress(cc.get(i));
}

Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", port);
props.put("mail.smtp.auth", "true");
props.setProperty("mail.smtp.ssl.enable", "true");//开启ssl,根据使用的服务器判断是否开启
props.setProperty("mail.transport.protocol", "smtp");

Auth auth = new Auth(user, password);
Session session = Session.getInstance(props, auth);
session.setDebug(true);
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipients(Message.RecipientType.TO, toAddress);
message.addRecipients(Message.RecipientType.CC, ccAddress);
message.setSubject(subject);
message.setContent(content, "text/html;charset=utf-8");
message.setSentDate(new Date(1614667200));//发送时间
Transport.send(message);
} catch (Exception e) {
e.printStackTrace();
return "发送异常" + e;
}
return "发送成功";
}
}
项目demo: https://github.com/helloEveryoneByChenglong/java_mail

java 实现发送邮件功能的更多相关文章

  1. java实现发送邮件功能

    项目中实现发送邮件功能,先书写一个小Demo,记录如下: POM.XML中导入依赖 <!-- start java 提供的支持邮件发送相关业务的类 --> <dependency&g ...

  2. java mail发送邮件

    最近做了自动发送邮件功能,带附件的:需要的jar包有

  3. JavaMail实现邮箱之间发送邮件功能

    package com.minstone.message.util; import java.util.Date; import java.util.Properties; import javax. ...

  4. java实现发送邮件工具

    java实现发送邮件的功能:首先需要导入mail.jar: 然后需要写发送方法: 1.邮箱发送封装工具类: package com.wxjiameng.utils; import java.util. ...

  5. SpringBoot 发送邮件功能实现

    背景 有个小伙伴问我你以前发邮件功能怎么弄的.然后我就给他找了个demo,正好在此也写一下,分享给大家. 理清痛点 发送邮件,大家可以想一下,坑的地方在哪? 我觉得是三个吧. 第一:邮件白名单问题. ...

  6. JavaMail应用--通过javamail API实现在代码中发送邮件功能

    JavaMail应用   在日常开发中,可能会引用到发邮件功能,例如在持续集成中,自动化测试运行完毕,自动将测试结果以报表的形式发送邮件给相关人.那么在Java中如何实现发邮件呢? 在java EE ...

  7. 使用 SpringBoot 配置发送邮件功能

    1.使用 SpringBoot 配置发送邮件功能 项目总体结构 用户表设计 SET FOREIGN_KEY_CHECKS=0; CREATE DATABASE sample; USE sample; ...

  8. 【Java EE 学习 21 下】【 使用易宝支付接口实现java网上支付功能】

    一.网上支付分为两种情况,一种方法是使用直接和银行的支付接口,另外一种方法是使用第三方支付平台和银行对接完成支付. 1.直接和银行对接. 2.使用第三方支付平台 3.常见的第三方支付平台 二.使用易宝 ...

  9. DEDECMS会员注册如何配置邮箱发送邮件功能

    网站邮件功能是一个非常基础和有效的通信工具,配合dede会员注册邮件验证功能可以大量的拒绝垃圾注册用户.那么如何配置DEDECMS会员注册邮箱发送邮件功能?   1:配置dedecms网站发信EMAI ...

  10. Python django实现简单的邮件系统发送邮件功能

    Python django实现简单的邮件系统发送邮件功能 本文实例讲述了Python django实现简单的邮件系统发送邮件功能. django邮件系统 Django发送邮件官方中文文档 总结如下: ...

随机推荐

  1. Python代码将大量遥感数据的值缩放指定倍数的方法

      本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像文件的方法.   首先,看一下本文的具体需求.我们现有一 ...

  2. 报错sql_mode=only_full_group_by

    这个问题的原因是,在这种模式下,sql分组时默认只能select + 分组字段以及聚合函数,相当于做一个规范检查 但很多时候并不需要这个检查,因为真实sql中,分组后很多字段是1对1的,比如分组id, ...

  3. 【忍者算法】从风扇叶片到数组轮转:探索轮转数组问题|LeetCode 189 轮转数组

    从风扇叶片到数组轮转:探索轮转数组问题 生活中的算法 想象你在看一个风扇缓缓转动,每次转动三个叶片的距离.原本在上方的叶片转到了右侧,原本在右侧的叶片转到了下方...这就是一个生动的轮转过程.再比如, ...

  4. 前端视角看 HTTPS

    最近用Docusaurus搭了一个个人网站,部署后看到浏览器地址栏上"不安全"三个字感觉特别辣眼,便不由自主的想起了HTTPS.回忆起自己在日常开发中遇到的一些与HTTPS相关的知 ...

  5. CF1837E Play Fixing 题解

    首先来考虑什么情况方案数为 \(0\): 可以确定,在某一层中,两个原本都能晋级的队伍比赛: 可以确定,在某一层中,两个原本都不能晋级的队伍比赛. 发现假如写出每一场比赛及其胜者,可以形成一棵树形结构 ...

  6. VMware与宿主机文件夹共享的方法

    首先,在打开的虚拟机的主界面中点选我的电脑上的虚拟机系统,再点击右侧的编辑虚拟机设置. 然后,在弹出的虚拟机设置中点击"选项"标签栏目 点选在"选项"标签栏目中 ...

  7. vue+elementUI当渲染文本超出一定字数时显示省略号

    如图,当渲染的文字超出30字后显示省略号 1.设置过滤器 filters: { ellipsis(value) { if (!value) return ""; if (value ...

  8. Python - 程序体验

    CASE:输入某年某月某日,判断这一天是这一年的第几天? # 输入某年某月某日, 判断这一天是这一年的第几天? import datetime dtstr = input('Enter the dat ...

  9. 响应式编程之Reactive Streams介绍

    Reactive Streams 是一种用于‌异步流处理的标准化规范,旨在解决传统异步编程中的背压管理.资源消耗及响应速度等问题‌. 一.核心概念 ‌基本模型‌ ‌发布者(Publisher)‌:负责 ...

  10. Mpmath库-学习笔记

    目录 mpmath库学习 1. Introduction 1.2 Basic usage of mpmath 1.3 输出格式化 1.4 输出的小数点位数 2. BASIC FEATURES 2.1 ...