邮件服务器配置文件:

##协议

mail.transport.protocol=smtp

##邮件服务器地址

mail.smtp.host=mail.126.com

##邮件服务器端口

mail.smtp.port=25

##SMTP服务用户认证

mail.smtp.auth=true

第一个类:

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.util.Properties;

import javax.mail.Session;

public class SessionFactory {

private  SmtpAuth sa = new SmtpAuth("service", "ilove17k");

private  Session session = null;

private  Properties props = new Properties();

public Session getSession(String propertyFilePath) {

try {

props.load(new FileInputStream(new File(propertyFilePath)));

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

session = Session.getInstance(props,sa);

return session;

}

}

第二个类:

import java.io.UnsupportedEncodingException;

import java.util.Date;

import javax.activation.DataHandler;

import javax.activation.DataSource;

import javax.activation.FileDataSource;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import javax.mail.internet.MimeUtility;

public class MailUtil {

/**

* 是否有附件

*/

private boolean haveAttachment = false;

/**

* 邮件权限验证

*/

private SmtpAuth auth = null;

/**

* 从哪里发送

*/

private InternetAddress from = null;

/**

* 发给谁

*/

private String mailTo = null;

/**

* 邮件标题

*/

private String title = null;

/**

* 邮件内容

*/

private String body = null;

/**

* 邮件类型

*/

private String content_type = null;

/**

* 会话对象

*/

private Session session = null;

/**

* 邮件对象

*/

private MimeMessage msg = null;

/**

* 正文部分

*/

private MimeMultipart content = null;

/**

* 正文部分

*/

private MimeBodyPart content_part = null;

/**

* 邮件发送对象

*/

private Transport transport = null;

/**

* 属性文件的路径

*

* @param propertyFilePath

*/

public MailUtil(String propertyFilePath) {

SessionFactory sf=new SessionFactory();

session = sf.getSession(propertyFilePath);

msg = new MimeMessage(session);

try {

from = new InternetAddress("[email]service@17k.com[/email]");

} catch (AddressException e) {

e.printStackTrace();

}

content = new MimeMultipart();

content_part = new MimeBodyPart();

content_type = "text/html;charset=gb2312";

}

public boolean send() {

// 设置邮件主题

try {

msg.setSubject(title);

// 设置发信日期

msg.setSentDate(new Date());

// 设置发信人

msg.setFrom(from);

// 设置主收件人

msg.setRecipient(Message.RecipientType.TO, new InternetAddress(

mailTo));

// 设置抄送收件人

// msg.addRecipient(Message.RecipientType.CC, new InternetAddress(

// ""));

// 设置暗抄送人

// msg.addRecipient(Message.RecipientType.BCC, new InternetAddress(

// "[email]huql@17k.com[/email]"));

content_part.setText(body);

content_part.setHeader("Content-Type", content_type);

content.addBodyPart(content_part);

msg.setContent(content);

// 保存修改

msg.saveChanges();

// 创建发送对象

Transport trans = session.getTransport();

// 发送

trans.send(msg);

return true;

} catch (MessagingException e) {

e.printStackTrace();

return false;

}

}

/**

* 添加附件的方法

*

* @throws MessagingException

*/

public void addAttachMent() throws MessagingException {

// 添加附件

String filename = "D:\\Downloads\\super_star.swf"; // 用于存储文件名称与存放路径

if (filename != null || filename.length() > 0) {

DataSource fds = new FileDataSource(filename); // 创建文件流对象

MimeBodyPart p_w_upload_part = new MimeBodyPart();

p_w_upload_part.setDataHandler(new DataHandler(fds));

try {

p_w_upload_part.setFileName(MimeUtility.encodeText(fds

.getName()));

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

// 添加二进制编码至邮件体中

content.addBodyPart(p_w_upload_part);

}

}

public InternetAddress getFrom() {

return from;

}

public void setFrom(InternetAddress from) {

this.from = from;

}

public String getMailTo() {

return mailTo;

}

public void setMailTo(String mailTo) {

this.mailTo = mailTo;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getBody() {

return body;

}

public void setBody(String body) {

this.body = body;

}

}

测试:

public static void main(String args){

MailUtil mail = new MailUtil(propertyFile);

mail.setTitle(Utils.toGB2312(title));

mail.setBody(headContent.toString()+bookContent.toString());

mail.setMailTo(email);

}

java jmail_jmail的使用相关推荐

  1. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  2. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  3. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  4. Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常

    kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...

  5. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  6. OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3

    OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...

  7. Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid

    Gradle错误提示:Java home supplied via 'org.gradle.java.home' is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换 ...

  8. 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码

    java开发必知必会之看源码,而看源码的第一步则是找到源码

  9. java基本类型转换,随记

    java基本类型转换: double double 转 long double random = Math.round(Math.random()*10000); long l = new Doubl ...

最新文章

  1. OceanBase技术直播间开播啦!蚂蚁金服技术专家手把手教你搭建OB数据库~
  2. virtaulbox视图模式常用切换
  3. win10下gnuplot的安装和使用
  4. 网络营销推广解答网站排名上下摇摆不定怎么办?
  5. 采用 opencv surf 算子进行特征匹配
  6. 【Android】 Android中ListView使用详解
  7. 接口映射的实现及原理
  8. iOS8+ UITableView自动计算cell高度并缓存
  9. Hive:hive is not allowed to impersonate anonymous
  10. js扩展滚动窗口小插件实现文字左右上下滚动效果实例
  11. Linux无网络升级gcc,Linux离线(手动)升级GCC
  12. 华为户外模式怎么设置_华为FreeLace Pro降噪器效果怎么样?降噪开启和设置教程!...
  13. jumpserver开源堡垒机部署安装
  14. Java 故障安全异常处理
  15. C语言实现走迷宫小游戏
  16. python有没有网页版的pyqt_Python PyQT Web浏览器书签
  17. Debian11.5和Ubuntu22.04安装fcitx5中文输入法(五笔拼音)
  18. 布尔教育mysql优化_布尔教育-资源
  19. 基于ISCSI共享存储的KVM高可用群集配置
  20. Java8新特性——Stream API的简单应用

热门文章

  1. 多线程面试题_100多线程和Java并发面试问答–最终清单(PDF下载)
  2. python让用户输入一个列表_Python:如何将用户输入添加到列表中?
  3. b转换成mb php_攻防世界之WEB篇,php反序列化漏洞,网络安全入门篇
  4. android怎么写本地图片,Android 开发图片保存在本地
  5. 皮一皮:直男只想说一句,表白?是表特别白吗?
  6. Spring 官方发起Spring Authorization Server 项目
  7. JDK/Java 14 正式发布!然而我还在用 Java 8...
  8. crm系统是什么很棒ec实力_CRM系统都有哪些功能?CRM管理系统的主要用途又是什么?...
  9. android 混淆打包教程,Android studio 混淆打包
  10. 软工文档”注意注意“事项