java 发邮件 代码

2024-05-10 02:08
文章标签 java 代码 发邮件

本文主要是介绍java 发邮件 代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. MailSenderInfo

package org.fh.util.mail;   /*** 说明:发送邮件需要使用的基本信息 * 作者:FH Admin* from:www.fhadmin.org*/
import java.util.Properties;    
public class MailSenderInfo {    // 发送邮件的服务器的IP和端口    private String mailServerHost;    private String mailServerPort = "25";    // 邮件发送者的地址    private String fromAddress;    // 邮件接收者的地址    private String toAddress;    // 登陆邮件发送服务器的用户名和密码    private String userName;    private String password;    // 是否需要身份验证    private boolean validate = false;    // 邮件主题    private String subject;    // 邮件的文本内容    private String content;    // 邮件附件的文件名    private String[] attachFileNames;      /**   * 获得邮件会话属性   */    public Properties getProperties(){    Properties p = new Properties();    p.put("mail.smtp.host", this.mailServerHost);    p.put("mail.smtp.port", this.mailServerPort);    p.put("mail.smtp.auth", validate ? "true" : "false");    return p;    }    public String getMailServerHost() {    return mailServerHost;    }    public void setMailServerHost(String mailServerHost) {    this.mailServerHost = mailServerHost;    }   public String getMailServerPort() {    return mailServerPort;    }   public void setMailServerPort(String mailServerPort) {    this.mailServerPort = mailServerPort;    }   public boolean isValidate() {    return validate;    }   public void setValidate(boolean validate) {    this.validate = validate;    }   public String[] getAttachFileNames() {    return attachFileNames;    }   public void setAttachFileNames(String[] fileNames) {    this.attachFileNames = fileNames;    }   public String getFromAddress() {    return fromAddress;    }    public void setFromAddress(String fromAddress) {    this.fromAddress = fromAddress;    }   public String getPassword() {    return password;    }   public void setPassword(String password) {    this.password = password;    }   public String getToAddress() {    return toAddress;    }    public void setToAddress(String toAddress) {    this.toAddress = toAddress;    }    public String getUserName() {    return userName;    }   public void setUserName(String userName) {    this.userName = userName;    }   public String getSubject() {    return subject;    }   public void setSubject(String subject) {    this.subject = subject;    }   public String getContent() {    return content;    }   public void setContent(String textContent) {    this.content = textContent;    }    
}   

2.MyAuthenticator

package org.fh.util.mail;import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;/*** 说明:发送邮件需要使用的基本信息 * 作者:FH Admin* from:www.fhadmin.org*/
public class MyAuthenticator extends Authenticator{   String userName=null;   String password=null;   public MyAuthenticator(){   }   public MyAuthenticator(String username, String password) {    this.userName = username;    this.password = password;    }    protected PasswordAuthentication getPasswordAuthentication(){   return new PasswordAuthentication(userName, password);   }   
}   

3.SimpleMailSender

package org.fh.util.mail;import java.util.Date;
import java.util.Properties;import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;/*** 说明:邮件发送器* 作者:FH Admin* from:www.fhadmin.org*/
public class SimpleMailSender {/*** 以文本格式发送邮件* @param mailInfo 待发送的邮件的信息*/public boolean sendTextMail(MailSenderInfo mailInfo) throws Exception {// 判断是否需要身份认证MyAuthenticator authenticator = null;Properties pro = mailInfo.getProperties();if (mailInfo.isValidate()) {// 如果需要身份认证,则创建一个密码验证器authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());}// 根据邮件会话属性和密码验证器构造一个发送邮件的sessionSession sendMailSession = Session.getInstance(pro, authenticator);// 根据session创建一个邮件消息Message mailMessage = new MimeMessage(sendMailSession);// 创建邮件发送者地址Address from = new InternetAddress(mailInfo.getFromAddress());// 设置邮件消息的发送者mailMessage.setFrom(from);// 创建邮件的接收者地址,并设置到邮件消息中Address to = new InternetAddress(mailInfo.getToAddress());mailMessage.setRecipient(Message.RecipientType.TO, to);// 设置邮件消息的主题mailMessage.setSubject(mailInfo.getSubject());// 设置邮件消息发送的时间mailMessage.setSentDate(new Date());// 设置邮件消息的主要内容String mailContent = mailInfo.getContent();mailMessage.setText(mailContent);// 发送邮件Transport.send(mailMessage);return true;}/*** 以HTML格式发送邮件* * @param mailInfo 待发送的邮件信息*/public boolean sendHtmlMail(MailSenderInfo mailInfo) throws Exception {// 判断是否需要身份认证MyAuthenticator authenticator = null;Properties pro = mailInfo.getProperties();// 如果需要身份认证,则创建一个密码验证器if (mailInfo.isValidate()) {authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());}// 根据邮件会话属性和密码验证器构造一个发送邮件的sessionSession sendMailSession = Session.getInstance(pro, authenticator);// 根据session创建一个邮件消息Message mailMessage = new MimeMessage(sendMailSession);// 创建邮件发送者地址Address from = new InternetAddress(mailInfo.getFromAddress());// 设置邮件消息的发送者mailMessage.setFrom(from);// 创建邮件的接收者地址,并设置到邮件消息中Address to = new InternetAddress(mailInfo.getToAddress());// Message.RecipientType.TO属性表示接收者的类型为TOmailMessage.setRecipient(Message.RecipientType.TO, to);// 设置邮件消息的主题mailMessage.setSubject(mailInfo.getSubject());// 设置邮件消息发送的时间mailMessage.setSentDate(new Date());// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象Multipart mainPart = new MimeMultipart();// 创建一个包含HTML内容的MimeBodyPartBodyPart html = new MimeBodyPart();// 设置HTML内容html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");mainPart.addBodyPart(html);// 将MiniMultipart对象设置为邮件内容mailMessage.setContent(mainPart);// 发送邮件Transport.send(mailMessage);return true;}/*** @param SMTP    邮件服务器* @param PORT    端口* @param EMAIL   本邮箱账号* @param PAW     本邮箱密码* @param toEMAIL 对方箱账号* @param TITLE   标题* @param CONTENT 内容* @param TYPE    1:文本格式;2:HTML格式*/public static void sendEmail(String SMTP, String PORT, String EMAIL, String PAW, String toEMAIL, String TITLE,String CONTENT, String TYPE) throws Exception {// 这个类主要是设置邮件MailSenderInfo mailInfo = new MailSenderInfo();mailInfo.setMailServerHost(SMTP);mailInfo.setMailServerPort(PORT);mailInfo.setValidate(true);mailInfo.setUserName(EMAIL);mailInfo.setPassword(PAW);mailInfo.setFromAddress(EMAIL);mailInfo.setToAddress(toEMAIL);mailInfo.setSubject(TITLE);mailInfo.setContent(CONTENT);// 这个类主要来发送邮件SimpleMailSender sms = new SimpleMailSender();if ("1".equals(TYPE)) {sms.sendTextMail(mailInfo);} else {sms.sendHtmlMail(mailInfo);}}public static void main(String[] args) {try {SimpleMailSender.sendEmail("smtp.163.com","25","fhadmin@qq.com","密码","313596790@qq.com","你好","<p>你好</p>","2");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

这篇关于java 发邮件 代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/975133

相关文章

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3