java实现发送邮件

邮箱-Mailbox        Actor之间发送消息,并不是直接通过API的方式直接实现,而是依赖于自己的邮箱(mailbox)。这就好比在旧社会中,大家进行信件交流,发件人把自己的信件放到自己的邮箱中,送件人每天早上从你的邮箱中取出信件,在这个过程中,邮箱就起到了中间存储作用,所有的信件都会放在里面。在Actor系统中,邮箱是一个队列结构,默认遵循FIFO,可以根据我们的需要自定义。        Actor... 阅读详情

话不多说上代码:

1.需要依赖包:mail.jar

	<dependency>
		<groupId>javax.mail</groupId>
		<artifactId>mail</artifactId>
		<version>1.4.4</version>
	</dependency>
2.mail工具类:

此类里面的一些邮箱服务器参数需要自己去配置修改,否则无法测试通过(如果写在了配置文件里,可以通过注解方式来获取等)。如果你不需要日志等打印,请注释掉日志代码。此类里面封装了连个发邮件的方法,参数是EmailInfo的只是对下面测试中的那个方法的一个封装,如果你需要封装,博客最下面会附上代码。如果不需要,请忽略;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.mail.internet.MimeMessage;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;


public abstract class EmailUtil {

	private final static Logger logger = LoggerFactory.getLogger(EmailUtil.class);
	private static JavaMailSenderImpl mailSender;
	private static String mailbox_server;
	
	private EmailUtil() {
		
	}
	
	static{
		init();
	}

	private static void init(){
		mailSender = new JavaMailSenderImpl();
		mailSender.setDefaultEncoding("UTF-8");
		mailSender.setPort("mailbox_server_port"));//这里的参数都是从配置文件里读取的 自己修改  端口号是数值型
		mailSender.setHost("mailbox_server_host");//主机地址
		mailSender.setUsername("mailbox_server_username");//邮箱服务器发件人名称
		mailSender.setPassword("mailbox_server_password");//邮箱服务器密码
		mailbox_server ="mailbox_server";//这些对应填写就行,也不知道写的对应不对应
	}
	
	
	private static void validateEmail(String[] email) {
		if(email == null)
			throw new EmailUtilException("邮箱为null");
		String check = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
		for (int i = 0; i < email.length; i++) {
			Pattern regex = Pattern.compile(check);
			Matcher matcher = regex.matcher(email[i]);
			if(!matcher.matches())
				throw new EmailUtilException("邮箱格式校验错误...");
		}
	}

	
	public static void sendEmail(EmailInfo emailInfo){
		if(null == emailInfo)
			return;
		validateEmail(emailInfo.getDestination());
		MimeMessage message = mailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(message);
		try {
			helper.setFrom(mailbox_server);
			helper.setSubject(emailInfo.getTitle());
			helper.setText(emailInfo.getMailContent());
			helper.setTo(emailInfo.getDestination());
			mailSender.send(message);
		} catch (Exception e) {
			logger.warn("发送邮件失败..."+emailInfo.toString());
			e.printStackTrace();
		}
	}
	
	
	public static void sendEmail(String[] email, String title, String content) {
		validateEmail(email);
		MimeMessage message = mailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(message);
		try {
			helper.setFrom(mailbox_server);
			helper.setSubject(title);
			helper.setText(content);
			helper.setTo(email);
		} catch (Exception e) {
			e.printStackTrace();
		}
		mailSender.send(message);
	}
	public static void main(String[] args) {
		String[] email = {"xx@xx.com","xx@xx.com"};//替换成自己的邮箱即可,可单个可多个
		String title = "测试邮件";
		String content = "测试内容";
		sendEmail(email, title, content);
	}
}
class EmailUtilException extends RuntimeException {
	
	private static final long serialVersionUID = 1L;
	/**
	 * 
	 * @param message
	 */
	public EmailUtilException(String message) {
		super(message);
	}

	/**
	 * 
	 * @param message
	 * @param cause
	 */
	public EmailUtilException(String message, Throwable cause) {
		super(message, cause);
	}

	/**
	 * 
	 * @param cause
	 */
	public EmailUtilException(Throwable cause) {
		super(cause);
	}
}

***********************************如有附件*****************************

3.如果需要上传附件,可以将方法替换成如下代码,附件参数是filemap

public static void sendEmail(String[] email, String title, String content,Map<String,String> filemap) {
	validateEmail(email);
	MimeMessage message = mailSender.createMimeMessage();
	try {
		MimeMessageHelper helper = new MimeMessageHelper(message,true);//设置为true
		helper.setFrom(mailbox_server);
		helper.setSubject(title);
		helper.setText(content);
		helper.setTo(email);
		/*添加附件*/  //map中key为路径,value为对应附件名字
		if(!filemap.isEmpty()){
		    for (Map.Entry<String,String> entry : filemap.entrySet()) {
			File file = new File(entry.getKey());
			FileSystemResource fileSource = new FileSystemResource(file);
			helper.addAttachment(MimeUtility.encodeWord(entry.getValue()),fileSource); 
		    }
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
	mailSender.send(message);
}
public static void main(String[] args) {
	String[] email = {"xxx@xx.com"};
	String title = "测试标题";
	String content = "测试内容";
	String files = "E:/ceshi.pdf";
	Map<String,String> map = new HashMap<String, String>();
	map.put(files, "测试附件.pdf");
	sendEmail(email, title, content, map);
}





******************************************************************************************************



******************************************************************************************************

//封装的EmailInfo类,如有需要请关注一下代码:

import java.util.Arrays;


public class EmailInfo {

	//邮件标题
	private String title;
	//邮件内容
	private String mailContent;
	//接收人
	private String[] destination;
	//邮件类型
	private int type;
	
	public EmailInfo(){
		
	}
	
	public EmailInfo(String title,String mailContent,String[] destination){
		this.title = title;
		this.mailContent = mailContent;
		this.destination = destination;
	}
	
	public EmailInfo(String title,String mailContent,String[] destination,int type){
		this.title = title;
		this.mailContent = mailContent;
		this.destination = destination;
		this.type = type;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getMailContent() {
		return mailContent;
	}

	public void setMailContent(String mailContent) {
		this.mailContent = mailContent;
	}

	public String[] getDestination() {
		return destination;
	}

	public void setDestination(String[] destination) {
		this.destination = destination;
	}

	public int getType() {
		return type;
	}

	public void setType(int type) {
		this.type = type;
	}

	@Override
	public String toString() {
		return "EmailInfo [title=" + title + ", mailContent=" + mailContent + ", destination="
				+ Arrays.toString(destination) + ", type=" + type + "]";
	}
}


java发送邮件实现附件发送 发送邮件集成富文本编辑器wangeditor 阅读详情

相关推荐

邮箱发送邮件JAVA实现

import java.io.File; import java.sql.Array; import java.util.Iterator; import java.util.Map; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.activation.MailcapCommandMap; import javax.

qq_34823218的博客 656

Java实现邮件发送

一、邮件服务器与传输协议 要在网络上实现邮件功能,必须要有专门的邮件服务器。这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。 SMTP服务器地址:一般是 smtp.xxx.com,比如163邮箱是smtp.163.com,qq邮箱是smtp.qq.com。 1:SMTP协议 通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。 2:POP3协议 通常把处理用户pop3请求(邮件接收请求)的服务器

苍煜 4749

java实现阿里云邮箱发送邮件

1、pom,xml <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> 2 、properties.ini #默认的smtp域名 smtpServer = smtp.

small_emotion的博客 3936

使用 javamail 发送 SSL 加密邮件

在实现一个用户 passport 系统或者其他大型系统的时候, 常常需要使用给用户发送邮件的功能, 下面介绍整套解决方案. •添加项目依赖 在 maven 配置文件 pom.xml 中添加如下依赖: javax.mail mail 1.4.5 •实现邮件发送类 实现发送邮件功能的代码如下: package com.vipshop.pass...

hoochiang的专栏 669

JAVA实现发送qq邮件

了解邮件发送的一些基本概念 1. 邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器。例如现在Internet很多提供邮件服务的厂商:sina、sohu、163等等他们都有自己的邮件服务器。 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。 电子邮箱(E-Mail地址)的获得需要在邮件服务器上进行申...

only老K的博客 qq:1025271924 1315

深入解析Pytest 底层源码

Pytest 的底层架构是一个基于 pluggy钩子机制的微内核架构。其核心流程是一个固定的链条,链条上的每个环节都通过钩子向外暴露,允许插件介入。这种设计使得 Pytest 极其灵活和强大。启动: 解析配置,加载所有插件(包括核心插件)。收集: 遍历文件系统,发现测试用例,并生成Item对象。执行: 对每个Item,依次执行setup->call->teardown协议。报告: 在整个过程中,通过不同的钩子收集信息,最终生成报告。

monk all the way 619

Java发送邮件(一)之JavaMail

Java发送邮件(一)之JavaMail前言一、什么是SMTP、POP3、IMAP?二、利用JavaMail发送邮件2.1 引入依赖:2.2 设置发件人邮件的SMTP服务2.3 API使用2.4 API使用时的问题2.4.1 如何设置多个收件人(抄送人)?2.4.2 RecipientType的类型有哪些?分别代表什么?2.4.3 如何发送带格式的邮件,比如html?2.4.4 邮件发送时乱码怎么办?2.4.5 发送邮件时报错java.lang.ClassNotFoundException: com.sun

大程程IT笔记 1783

音频测试专题

麦克风与扬声器单体测试指标及整机性能测试概述 麦克风测试指标包括频率响应、灵敏度、指向性等10项关键参数,用于评估声音捕捉和信号转换性能。扬声器测试包含频率响应、灵敏度等12项指标,涉及声学特性和物理参数。整机性能测试覆盖安静、嘈杂和正常三种环境,重点检测麦克风底噪、清晰度、扬声器音量及通话质量等12项功能指标。两类单体测试与整机测试共同构成完整的音频设备质量评估体系,确保产品在不同场景下的性能表现。

weixin_52640906的博客 1317

使用JAVA实现邮件发送功能

使用Java实现邮件发送(文本邮件,单个附件邮件,多个附件邮件)。

Sophia的博客 3万+

Linux内存压力测试工具【memtester】详且精

对Linux下的压力测试工具memtester有一个比较人性化的概述,以及避坑心得。

weixin_44118923的博客 1万+

态路小课堂丨三款800G光模块方案介绍—SR8/DR8/2FR4

800G QSFP-DD 2FR4光模块使用CWDM4波长(1271/1291/1311/1331nm),单通道速率为100G,通过MUX减小光纤的数目,其光学接口采用CS接口或双芯LC接口。

poposu的博客 2386

JAVA实现邮件发送

一、邮件服务器与传输协议 要在网络上实现邮件功能,必须要有专门的邮件服务器。这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。 SMTP服务器地址:一般是 smtp.xxx.com,比如163邮箱是smtp.163.com,qq邮箱是smtp.qq.com。 SMTP协议:通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。 POP3协议:通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP

qq_34823218的博客 2万+

蓝桥杯单片机学习13——NE555方波发生器&频率测量

NE555详解、引脚图介绍、原理图及工作原理讲解、方波产生的原理、定时器测量频率的原理及使用方法、代码实现

weixin_67907028的博客 1万+

java实现邮件发送

java实现邮件发送逻辑并不复杂(不包含附件),只是根据官方调用官方提供的sdk,首先需要引入maven依赖:javax.mail &lt;dependency &gt; &lt;groupId &gt;com.sun.mail&lt;/groupId &gt; &lt;artifactId &gt;javax.mail&lt;/artifactId &gt; &...

瑾年的博客 8429

告别抓瞎!手把手教你用Keysight Infinium和M8040完成PCIe 5.0 TX/RX信号完整性测试

本文详细介绍了如何使用Keysight Infinium示波器和M8040误码仪完成PCIe 5.0 TX/RX信号完整性测试。从测试前的设备准备、软件配置到具体的TX信号测试步骤和RX容限测试实战,提供了全面的操作指南和常见问题解决方案,帮助工程师高效完成PCIe 5.0合规性测试。

weixin_30911451的博客 503

ResNet改进(20):融合Swin Transformer与ResNet

这种混合架构的设计理念是:在保留CNN强大局部特征提取能力的同时,引入Transformer的全局建模优势。我们实现的模型在ResNet18的基础上嵌入了一个简化版的Swin Transformer Block,旨在探索两种范式结合的可能性。通过在ResNet早期阶段引入Transformer模块,我们既保留了CNN强大的局部特征提取能力,又获得了Transformer的全局建模优势。本文提出的ResNet与Swin Transformer混合架构,探索了CNN与Transformer结合的可能性。

2401_82355416的博客 859

用Java实现发送邮件——Java Email

用Java实现发送邮件——Java Email

qq_64271154的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java实现发送邮件(定时自动发送邮件)

在我们做项目时,有些需求需要通知其他人。比如在手机号获取验证码登录时,会发送短信给该用户去接收验证码从而进行身份确认进行安全登录。但有些时候是需要进行群发消息通知用户的,这个过程肯定不是认为的去发送,所以我们就用java来实现通知用户的邮件发送功能。 至于为什么要发送QQ邮件通知用户,而不是使用短信等方式?想必对这方面有些了解的就知道短信服务是要开通服务的,就是需要交钱的(这个钱是根据具体发送短信的条数算的),这里对于收钱的我们就不演示了。都这么说了,大家肯定猜到了QQ邮件是免费的!没错啊,你没有听

心态的博客 5591

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java实现发送邮件功能

Java实现发送邮件功能,使用mail包里面的函数进行实现此功能。话不多说,直接贴代码。// 创建默认的MimeMessage对象。// 设置发件人From 头部字段。// 设置Subject 头部字段。// 获取默认session对象。// 设置收件人To 头部字段。// 定义头部字段及发邮件。// 设置邮件服务器。

2401_87251273的博客 421

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java代码实现邮件的发送

介绍:本文maven项目通过java代码实现邮件的发送,发送服务器为QQ邮箱服务器,即通过QQ邮箱实现邮件的发送首先需要开启QQ服务并获取授权码授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码适用于登录以下服务:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务QQ邮箱Web界面上方——设置——账户——找到POP3/IMAP/SMTP/Exchange/Card...

qq_40969452的博客 909

基于java实现SMTP发送邮件

本文介绍了如何使用Java实现SMTP邮件发送功能。通过Jakarta Mail工具包,开发者可以便捷地构建邮件发送能力。文章详细讲解了邮件发送的全流程,包括环境搭建、依赖配置、会话创建、认证机制、内容组装等关键步骤,并针对常见问题如认证失败、附件乱码等提供解决方案。示例代码展示了如何发送带抄送、密送和附件的邮件,包括SMTP服务器配置、身份验证、收件人设置等核心功能。该实现适用于企业级应用的自动化邮件需求,为开发者提供了可落地的技术参考。

工作难点和娱乐项目,总结与分享 2052

发送邮件 空格 java_java实现邮件发送功能

所需jar包:javax.mail.jar例子:import java.util.Date;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Message.RecipientType;import java...

weixin_42560991的博客 1143
上一篇: java根据模板生成pdf文件并导出
下一篇: java动态生成pdf含表格table和 合并两个pdf文件功能
TOP__ONE
博客等级 码龄10年 74粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值