前段时间在工作中用到了邮件发送监控的报警信息,今天在这个记录一下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发送)的更多相关文章

  1. 邮件实现详解(四)------JavaMail 发送(带图片和附件)和接收邮件

    好了,进入这个系列教程最主要的步骤了,前面邮件的理论知识我们都了解了,那么这篇博客我们将用代码完成邮件的发送.这在实际项目中应用的非常广泛,比如注册需要发送邮件进行账号激活,再比如OA项目中利用邮件进 ...

  2. 【Mail】JavaMail发送带附件的邮件(二)

    上一篇讲了使用JavaMail发送普通邮件([Mail]JavaMail介绍及发送邮件(一)),本例讲发送复杂的邮件(带有附件的邮件) 生成一封复杂的邮件 新建一个JavaWeb的Maven工程,引入 ...

  3. iOS开发笔记7:Text、UI交互细节、两个动画效果等

    Text主要总结UILabel.UITextField.UITextView.UIMenuController以及UIWebView/WKWebView相关的一些问题. UI细节主要总结界面交互开发中 ...

  4. 智能手机Web开发笔记

    智能手机版(简称M版)前端开发终于告一段落,第一次做移动端开发,没有想象中那么难搞,但是期间也遇到了各种这样那样的问题,虽然从小日记都不是自己写的,但是开发笔记还是要自己写的,不敢说让别人学习,只是仅 ...

  5. 微信公众号开发笔记(C#)

    这篇文章还不错,使用  .net , 对微信用户的想公众号发送的文字进行回复.比较简单,自己可以修改更复杂的回复. 微信公众号开发笔记(C#) 原文地址 需求分析 根据用户在微信上发送至价值中国公众号 ...

  6. firefox 扩展开发笔记(三):高级ui交互编程

    firefox 扩展开发笔记(三):高级ui交互编程 前言 前两篇链接 1:firefox 扩展开发笔记(一):jpm 使用实践以及调试 2:firefox 扩展开发笔记(二):进阶开发之移动设备模拟 ...

  7. iBeacon 开发笔记

    iBeacon开发笔记 2015.10.19 airlocate ========= airlocate显示如何使用这个监控范围clbeaconregions. 代码还提供了一个例子,你如何能校准和配 ...

  8. [Java] JavaMail 发送带图片的 html 格式的邮件

    JavaMail 发送的邮件正文和附件是相互独立的,但是内置图片需要定位图片在正文中的位置,所以内置图片和邮件正文是互相依赖的. 发送带附件的邮件可参考JavaMail 发送 html 格式.带附件的 ...

  9. 李兴华JavaWeb开发笔记

    李兴华JavaWeb开发笔记 1.Java语法-基础 环境变量-JAVA_HOME, PATH, ClassPath 变量名 作用 举例 JAVA_HOME 指向JDK目录 C:\Program Fi ...

  10. Windows 8.1 store app 开发笔记

    原文:Windows 8.1 store app 开发笔记 零.简介 一切都要从博彦之星比赛说起.今年比赛的主题是使用Bing API(主要提到的有Bing Map API.Bing Translat ...

随机推荐

  1. Failure [DELETE_FAILED_INTERNAL_ERROR]之后rm apk卸载

        版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/heng615975867/arti ...

  2. @JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化

    @JsonInclude(Include.NON_NULL) resttemplate 传递实体参数时 序列化为json时 空字符串不参与序列化 https://www.cnblogs.com/sup ...

  3. python开源项目聚合推荐【1】

    ******************************************************* 01项目名:unimatrix 功能介绍:Python模拟“黑客帝国”影片中的终端动画脚 ...

  4. WebGL学习笔记(八):光照

    局部光照与全局光照 局部光照 只考虑光源到模型表面的照射效果,运算量较小: 全局光照 考虑到环境中所有表面和光源相互作用的照射效果,即让没有直接受光照射的位置也会受周围反射光的影响,运算量较大: Ph ...

  5. 【WPF】通过修改dataGrid的cell的style,改变选中行失去焦点时的颜色

    <Style TargetType="{x:Type DataGridCell}"> <Style.Triggers> <Trigger Proper ...

  6. Maya编程——节点&命令

    代码写完出现问题: 查了一下原因:

  7. PostgreSQL的递归查询(with recursive) ,替代oracle 的级联查询connect by

    开发有需求,说需要对一张地区表进行递归查询,Postgres中有个 with recursive的查询方式,可以满足递归查询(一般>=2层). 测试如下: create table tb(id ...

  8. spark org.apache.spark.ml.linalg.DenseVector cannot be cast to org.apache.spark.ml.linalg.SparseVector

    在使用 import org.apache.spark.ml.feature.VectorAssembler 转换特征后,想要放入 import org.apache.spark.mllib.clas ...

  9. 消息中间件 kafka rabbitmq 选型差异

    https://www.zhihu.com/question/43557507 https://baijiahao.baidu.com/s?id=1610644333184173190&wfr ...

  10. mysql新建用户host使用%但使用localhost无法连接

    今天新建了一个用户,权限也给了,host设置的为% 但是使用该用户连接时出现如下错误 查看用户 mysql> select host,user,password from mysql.user; ...