java实现邮件发送

article/2025/9/14 4:09:03

一.第一步:导入两个jar包。

     activation.jar  和 mail.jar,            一定要添加到构建路径(不然找不到包)

两个用于Java发送邮件的jar包-Java文档类资源-CSDN下载

二、创建邮箱工具类:Mail.java


import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;public class Mail {String to = "";// 收件邮箱String from = "";// 发件邮箱String host = "";// smtp主机   服务器地址         String username = "";   //登录服务器校验用户String password = "";   //登录服务器校验密码String filename = "";// 附件文件名String subject = "";// 邮件主题String content = "";// 邮件正文Vector file = new Vector();// 附件文件集合public Mail() {}//构造器,提供直接的参数传入public Mail(String to, String from, String smtpServer, String username, String password, String subject,String content) {this.to = to;this.from = from;this.host = smtpServer;this.username = username;this.password = password;this.subject = subject;this.content = content;}//设置邮件服务器地址public void setHost(String host) {this.host = host;}//设置登录服务器校验密码public void setPassWord(String pwd) {this.password = pwd;}//设置登录服务器校验用户public void setUserName(String usn) {this.username = usn;}//设置邮件发送目的邮箱public void setTo(String to) {this.to = to;}//设置邮件发送源邮箱public void setFrom(String from) {this.from = from;}//设置邮件主题public void setSubject(String subject) {this.subject = subject;}//设置邮件内容public void setContent(String content) {this.content = content;}//把主题转换为中文public String transferChinese(String strText) {try {strText = MimeUtility.encodeText(new String(strText.getBytes(), "GB2312"), "GB2312", "B");} catch (Exception e) {e.printStackTrace();}return strText;}//往附件组合中添加附件public void attachfile(String fname) {file.addElement(fname);}//发送邮件public boolean sendMail() {// 构造mail sessionProperties props = System.getProperties();props.put("mail.smtp.host", host);props.put("mail.smtp.auth", "true");Session session = Session.getDefaultInstance(props, new Authenticator() {public PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(username, password);}});try {// 构造MimeMessage 并设定基本的值MimeMessage msg = new MimeMessage(session);msg.setFrom(new InternetAddress(from));InternetAddress[] address = { new InternetAddress(to) };msg.setRecipients(Message.RecipientType.TO, address);subject = transferChinese(subject);msg.setSubject(subject);// 构造MultipartMultipart mp = new MimeMultipart();// 向Multipart添加正文MimeBodyPart mbpContent = new MimeBodyPart();mbpContent.setText(content);// 向MimeMessage添加(Multipart代表正文)mp.addBodyPart(mbpContent);// 向Multipart添加附件Enumeration efile = file.elements();while (efile.hasMoreElements()) {MimeBodyPart mbpFile = new MimeBodyPart();filename = efile.nextElement().toString();FileDataSource fds = new FileDataSource(filename);mbpFile.setDataHandler(new DataHandler(fds));mbpFile.setFileName(fds.getName());// 向MimeMessage添加(Multipart代表附件)mp.addBodyPart(mbpFile);}file.removeAllElements();// 向Multipart添加MimeMessagemsg.setContent(mp);msg.setSentDate(new Date());// 发送邮件Transport.send(msg);} catch (MessagingException mex) {mex.printStackTrace();Exception ex = null;if ((ex = mex.getNextException()) != null) {ex.printStackTrace();}return false;}return true;}}

三、实例化,配置邮箱并发送邮件

//测试发送邮件public class testMail {public static void main(String[] args){Mail sendmail = new Mail();sendmail.setHost("smtp.qq.com");           //服务器地址sendmail.setUserName("xxxxxxxxxx@qq.com"); //登录服务器校验用户sendmail.setPassWord("xxxxxxxxxxxxxxxxx");  //登录服务器校验密码sendmail.setTo("xxxxxxxxxxx@qq.com");       //收件人sendmail.setFrom("xxxxxxxxx@qq.com");     //发件人          sendmail.setSubject("新的账单");           //主题(标题)sendmail.setContent("这是六月份的账单");   //内容//Mail sendmail = new 
Mail("aaaaaaaaa@163.com","aaaaaaaaa@163.com","smtp.163.com","aaaaaaaaa","aaaaaaaaa","你好","喂,你好吗?");//也可以一条语句设置//添加附件     sendmail.attachfile("D:\\1.png");//sendmail.attachfile("D:\\hhh.xls");  // 可以有多个附件,调用一次就就添加一个附件文件 //发送邮件boolean flag=sendmail.sendMail();if(flag==true) {System.out.println("发送成功!");}else {System.out.println("发送失败!");}}}

以QQ邮箱为例,服务器地址为smtp.qq.com ,不同的邮箱会有差异  

这里的PassWord不是邮箱的密码,这个要登录邮箱去获取,我把它理解成 授权码/验证码,

有了这个程序就能用你的账号发送邮件,获取方法我放在下面


http://chatgpt.dhexx.cn/article/i33lwEr2.shtml

相关文章

Java(81):Java发邮件简单示例

Java Email jar包下载地址:JavaMail API https://www.oracle.com/java/technologies/javamail.html JavaMail 右侧下载,选择jar包下载 API文档参考:JavaMail API documentation https://javaee.github.io/javamail/docs/api/ 或直接引用…

java发送qq邮件_「java发邮件」Java 通过SMTP实现发送QQ邮件 - seo实验室

java发邮件 在Eclipse中创建项目,并把javax.amil.jar和commons-email-1.5,jar复制到项目中 链接:https://pan.baidu.com/s/1sQjA1GEpKi6IJJRGHKxjeA 密码:4ene 添加步骤: 1.首先在项目下创建一个文件夹,保存我们的jar包…

Java发邮件配置-hutool+腾讯企业邮箱

1、技术选型 1.1、hutool工具 1.2、javax.mail 1.3、腾讯企业邮箱2、环境准备 2.1、pom <!--javax.mail--><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependen…

Java(83)Java发邮件简单工具类

1、Maven引用 <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api --><dependency><groupId>javax.mail</groupId><artifactId>javax.mail-api</artifactId><version>1.6.2</version></dependency><…

java发邮件 动态切换当前发送人

最近项目需要实现一个发送邮件功能&#xff0c;踩了一些坑&#xff0c;最终实现了。 在此写一下心得 开始做的时候一塌糊涂&#xff0c;觉得挺难的&#xff0c;但是做完之后发现其实简单的一批&#xff0c;接下来我就来写一下实现流程。 1、准备好拿来发送邮件的账号&#xf…

Java 发邮件-带附件且正文html格式

入职新公司不久&#xff0c;接到一个给用户发邮件的需求&#xff0c;有两点需要说明的&#xff1a;1&#xff09;正文需要格式化&#xff1b;2&#xff09;需要带附件。 大概了解了一下需求&#xff0c;我马上开始思考&#xff0c;现有项目中是否有类似的接口可以支持&#xf…

java实现发送邮件

本文介绍下java实现邮件的发送&#xff0c;意在网站用户评论时能够及时通知站长和用户评论被回复后能够及时通知用户。 下文介绍下具体实现。 java实现 首先引入springboot的邮箱依赖 <dependency><groupId>org.springframework.boot</groupId><artif…

java邮件发送

一、JavaMail介绍 1、概述 JavaMail是利用现有的邮件账户发送邮件的工具&#xff0c;比如我在网易注册一个邮箱账户&#xff0c;通过JavaMail的操控&#xff0c;我可以不亲自登录网易邮箱&#xff0c;让程序自动的使用网易邮箱发送邮件。这一机制被广泛的用在注册激活和垃圾邮…

使用Java实现邮件的发送

数年前&#xff0c;邮件的发送是经过人为的运输&#xff0c;从发件人---当地邮局---收件地邮局---收件人&#xff0c;付出的人力物力是非常大的。随着时代的进步&#xff0c;科技的发展&#xff0c;如今我们的生活中出现更高级发送邮件的方式&#xff0c;最常用的就是从&#x…

Java发送邮件详解

目录 一、关于电子邮件 电子邮件 传输协议 SMTP协议 POP3协议 邮件收发原理 二、发送纯文本邮件 二、发送带图片和附件的邮件 一、关于电子邮件 电子邮件 要在网络上实现邮件功能&#xff0c;必须要有专门的邮件服务器。 这些邮件服务器类似于现实生活中的邮局&…

基于JavaMail的Java邮件发送:简单邮件发送

本文链接: https://blog.csdn.net/xietansheng/article/details/51673073 电子邮件的应用非常广泛&#xff0c;例如在某网站注册了一个账户&#xff0c;自动发送一封欢迎邮件&#xff0c;通过邮件找回密码&#xff0c;自动批量发送活动信息等。但这些应用不可能和我们自己平时…

js 实现计数器功能

1.运用 setInterval()定时器计算秒数 <!DOCTYPE html> <html><head><title>JS实现计数器</title><meta http-equiv"content-type" content"text/html; charsetgbk"><script src"https://cdn.bootcss.com/jqu…

element的formatter失效的解决方案

formatter传入数据失效 组件封装的时这样 使用方式还是和element的官方使用方式相同

html输入框只能输入文字,input文本框强制输入指定文字的方法以及IE11的兼容

背景:最近开发的韩国项目,在用户姓名输入框一栏中,要求只能输入韩文,通常用到onkeyup和onafterpaste两个事件来触发方法,并在方法中进行校验,但是在IE浏览器中,出现了一种情况,就是韩文单词拼写未完成的时候,会直接进行校验并显示,如下图实例所展示,并不是需要想要的…

jquery对表格行列的操作-jquery动态增加表格行或者列

jquery对表格的操作是老生常谈的问题。最近项目中用到了&#xff0c;今天在这里分享一下&#xff01; 效果大体如下&#xff1a; 分享一下代码吧&#xff01; html <div class"table-responsive" id"Bk_table" style"display:none;">&l…

动态改变Input和Textarea值Vue数据没有绑定的解决办法

背景&#xff1a; 我在循环里面的input框需要限制输入的值的类型&#xff0c;如果我绑定了change的方法的话 首先需要失去焦点才能生效&#xff0c;如果不失去焦点直接点击确定按钮是不能触发事件的 值还是原来的 &#xff0c;第二个如果层级多的话需要把索引什么的传过去用$se…

HTML 限制文本框只能输入数字 onkeyup+onafterpaste

限制文本框只能输入数字 < input onkeyup "if(isNaN(value))execCommand(undo)" onafterpaste "if(isNaN(value))execCommand(undo)" > < input name txt1 onchange "if(/\D/.test(this.value)){alert(只能输入数字);this.value;}" …

JAVAFX的table样式修改

直接上代码吧&#xff0c; .table-view{-fx-font-size: 16; 修改表格字体的大小 } 表头的背景设置 .table-view .column-header-background {-fx-background-color: #DBDBDB; } 表头设置 .table-view .column-header{-fx-border-color:#ffffff; -fx-border-width:0 1 …

bootstrap-table样式修改

bootstrap-table修改后的效果如下 1.删除边线 <style>.table>tbody>tr>td{border-top: 1px solid transparent !important;border-right: 1px solid transparent !important;border-left: 1px solid transparent !important;}.table>thead>tr>th{bord…

HTML常用table样式

转自&#xff1a;http://atgoingguoat.iteye.com/blog/2074431 常用table样式&#xff0c;备自己常年复制用。 效果图 Java代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.d…