【开发笔记】- 发送邮件(通过JavaMail发送)
前段时间在工作中用到了邮件发送监控的报警信息,今天在这个记录一下JavaMail的邮件工具类。
下边为用到的JavaMail的jar包的pom依赖。这里用的是JavaMail的1.4.6的版本。
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.6</version>
</dependency>
这里是工具类中的用到的邮件的一些参数对象的实体类。
package com.juihai.entity;
import java.util.Arrays;
public class EmailTO {
private String title;//邮件主题
private String content;//邮件内容
private String sender;//发件人账号
private String password;//发件人密码
private String host;//发件邮箱服务器
private String[] toAdress;//收件人地址
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getSender() {
return sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String[] getToAdress() {
return toAdress;
}
public void setToAdress(String[] toAdress) {
this.toAdress = toAdress;
}
@Override
public String toString() {
return "EmailTO [title=" + title + ", content=" + content + ", sender="
+ sender + ", password=" + password + ", host=" + host
+ ", toAdress=" + Arrays.toString(toAdress) + "]";
}
}
这里是就是发送Email的工具类。具体说明件代码中的注释。
import java.io.UnsupportedEncodingException;
import java.security.GeneralSecurityException;
import java.util.Properties; import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage; import org.apache.log4j.Logger; import com.juihai.entity.EmailTO; public class SendEmailUtils {
/** 日志输出 */
private static Logger log = Logger.getLogger(SendEmailUtils.class); public static boolean send(EmailTO to) throws GeneralSecurityException{ final String user = to.getSender();
final String password = to.getPassword();
log.info("SendEmailUtils >>>> Start Send Mail");
Properties properties = System.getProperties();// 获取系统属性
properties.setProperty("mail.smtp.host", to.getHost());// 设置邮件服务器 "smtp.163.com",这是发件人的邮箱服务器
properties.put("mail.smtp.auth", "true");
String senderNick = null;
//部分邮箱服务器需要开启SSL验证才可以发送邮件,需要的话,开启注释即可
/*MailSSLSocketFactory sf = new MailSSLSocketFactory();// SSL验证 begin
sf.setTrustAllHosts(true);
properties.put("mail.smtp.ssl.enable", "true");
properties.put("mail.smtp.ssl.socketFactory", sf);// SSL验证 end*/ Session session = Session.getDefaultInstance(properties,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password); // 发件人邮件用户名、密码
}
});
try {
MimeMessage message = new MimeMessage(session);// 创建默认的 MimeMessage对象
senderNick = javax.mail.internet.MimeUtility.encodeText("Juihai");//设置发件人昵称
message.setFrom(new InternetAddress(senderNick+"<"+user+">")); //message.addRecipient(Message.RecipientType.TO,new InternetAddress());//创建单个收件人
String[] tos = to.getToAdress();//创建多个收件人
if (tos != null && tos.length != 0) {
InternetAddress[] toAddress = new InternetAddress[tos.length];
for (int i = 0; i < tos.length; i++) {
toAddress[i] = new InternetAddress(tos[i]);
}
message.setRecipients(Message.RecipientType.TO, toAddress);
}
message.setSubject(to.getTitle());//设置邮件主题
//message.setText(content);//发送纯文本内容
message.setContent(to.getContent(), "text/html;charset=utf-8");//发送html邮件内容 Transport.send(message);//发送Email
log.info(" SendEmailUtils邮件发送成功");
return true;
}catch (MessagingException mex) {
mex.printStackTrace();
log.info(" >>>>SendEmailUtils邮件发送失败"+mex);
} catch (UnsupportedEncodingException e) {
log.info(" >>>>SendEmailUtils邮件发送失败-设置发件人昵称error"+e);
e.printStackTrace();
}
return false;
}
}
【开发笔记】- 发送邮件(通过JavaMail发送)的更多相关文章
- 邮件实现详解(四)------JavaMail 发送(带图片和附件)和接收邮件
好了,进入这个系列教程最主要的步骤了,前面邮件的理论知识我们都了解了,那么这篇博客我们将用代码完成邮件的发送.这在实际项目中应用的非常广泛,比如注册需要发送邮件进行账号激活,再比如OA项目中利用邮件进 ...
- 【Mail】JavaMail发送带附件的邮件(二)
上一篇讲了使用JavaMail发送普通邮件([Mail]JavaMail介绍及发送邮件(一)),本例讲发送复杂的邮件(带有附件的邮件) 生成一封复杂的邮件 新建一个JavaWeb的Maven工程,引入 ...
- iOS开发笔记7:Text、UI交互细节、两个动画效果等
Text主要总结UILabel.UITextField.UITextView.UIMenuController以及UIWebView/WKWebView相关的一些问题. UI细节主要总结界面交互开发中 ...
- 智能手机Web开发笔记
智能手机版(简称M版)前端开发终于告一段落,第一次做移动端开发,没有想象中那么难搞,但是期间也遇到了各种这样那样的问题,虽然从小日记都不是自己写的,但是开发笔记还是要自己写的,不敢说让别人学习,只是仅 ...
- 微信公众号开发笔记(C#)
这篇文章还不错,使用 .net , 对微信用户的想公众号发送的文字进行回复.比较简单,自己可以修改更复杂的回复. 微信公众号开发笔记(C#) 原文地址 需求分析 根据用户在微信上发送至价值中国公众号 ...
- firefox 扩展开发笔记(三):高级ui交互编程
firefox 扩展开发笔记(三):高级ui交互编程 前言 前两篇链接 1:firefox 扩展开发笔记(一):jpm 使用实践以及调试 2:firefox 扩展开发笔记(二):进阶开发之移动设备模拟 ...
- iBeacon 开发笔记
iBeacon开发笔记 2015.10.19 airlocate ========= airlocate显示如何使用这个监控范围clbeaconregions. 代码还提供了一个例子,你如何能校准和配 ...
- [Java] JavaMail 发送带图片的 html 格式的邮件
JavaMail 发送的邮件正文和附件是相互独立的,但是内置图片需要定位图片在正文中的位置,所以内置图片和邮件正文是互相依赖的. 发送带附件的邮件可参考JavaMail 发送 html 格式.带附件的 ...
- 李兴华JavaWeb开发笔记
李兴华JavaWeb开发笔记 1.Java语法-基础 环境变量-JAVA_HOME, PATH, ClassPath 变量名 作用 举例 JAVA_HOME 指向JDK目录 C:\Program Fi ...
- Windows 8.1 store app 开发笔记
原文:Windows 8.1 store app 开发笔记 零.简介 一切都要从博彦之星比赛说起.今年比赛的主题是使用Bing API(主要提到的有Bing Map API.Bing Translat ...
随机推荐
- mlocate比find快很多的查找命令
mlocate比find快很多的查找命令 使用linux操作系统的人,一般都用过文件查找命令find,在文件数量非常庞大的时候,比如在高通的android工程项目中,目录大小有十几个G,文件数量非常多 ...
- Linux下的sleep()和sched_yield()(转)
阿里四面被问到了这个问题,一脸懵逼,下来也没找到什么阐述这个的文章,就自己查man来对比总结一下吧: sched_yield()的man手册描述如下: DESCRIPTION sched_ ...
- django入门8之xadmin引入富文本和excel插件
django入门8之xadmin引入富文本和excel插件 Xadmin引入富文本 插件的文档 https://xadmin.readthedocs.io/en/docs-chinese/make_p ...
- zp本地包
https://pan.baidu.com/s/13670pdPNvG_o1coYFnovXA 密码: 3pk3
- java初中级面试题(最新版)
Java基础方面: 概念 1.什么是面向对象? 万物皆对象,把现实中有共同特性行为的对象抽象成类,类是程序中最基本的单位. 2.类和对象 面向对象的思想是如何在java展现的呢? 就是通过类和对象 * ...
- 查找算法(7)--Hash search--哈希查找
1.哈希查找 (1)什么是哈希表(Hash) 我们使用一个下标范围比较大的数组来存储元素.可以设计一个函数(哈希函数, 也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标)相对应,于是用 ...
- PHP 指定时间/时间戳+某天/某月/某年
PHP指定时间戳加上1天,1周,1月,一年其实是不需要用上什么函数的!指定时间戳本身就是数字整型,我们只需要再计算1天,1周它的秒数相加即可! 博主搜索php指定时间戳加一天一年,结果许多的文章给出来 ...
- Mouse Genome Informatics(MGI)数据库介绍
欢迎来到"bio生物信息"的世界 有些人研究了很久的基因,都不一定知道他们研究的基因在小鼠模型上发挥什么作用--陈文燕 今天想介绍一个数据库MGI,全称Mouse Genome I ...
- 路径规划: PRM 路径规划算法 (Probabilistic Roadmaps 随机路标图)
随机路标图-Probabilistic Roadmaps (路径规划算法) 路径规划作为机器人完成各种任务的基础,一直是研究的热点.研究人员提出了许多规划方法如: 1. A* 2. Djstar 3. ...
- 为什么重写equals时一定要重写hashcode
我们开发时写一个类,默认继承Object类,Object类的equals方法是比较是否指向同一个对象(地址是否相同), Object类 的hashcode方法返回的对象内存地址的值, 一个类只重写了e ...