前段时间在工作中用到了邮件发送监控的报警信息,今天在这个记录一下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. 关于 ElementUI 通知组件 notification 重叠问题的解决方案

    转载链接:https://blog.csdn.net/csdn_yudong/article/details/101271214 ElementUI 通知组件(notification) 多个时会重叠 ...

  2. Multihypothesis Trajectory Analysis for Robust Visual Tracking

    Multihypothesis Trajectory Analysis for Robust Visual Tracking 2019-10-27 14:33:49 Paper: https://ww ...

  3. pdf 中画虚线

    <?php require('fpdf.php'); class PDF_Dash extends FPDF { function SetDash($black=null, $white=nul ...

  4. yum 安装指定版本Docker

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

  5. dd命令笔记

    dd命令 用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换 参数 if=FILE 指定输入源文件, 缺省为标准输入, < if=input file > iflag=FLAGS 指 ...

  6. 干掉搜狗输入法云代理SogouCloud.exe

    搜狗输入法暂时还离不开,但是很讨厌搜狗输入法一直在后台的"搜狗云代理程序"(C:\Program Files (x86)\SogouInput\9.1.0.2657\SogouCl ...

  7. Spring源码解析之PropertyPlaceholderHelper(占位符解析器)

    Spring源码解析之PropertyPlaceholderHelper(占位符解析器) https://blog.csdn.net/weixin_39471249/article/details/7 ...

  8. UPDATE REPLACE 替换"\\"

    UPDATE Working_InterfaceToManager SET StudyPhotoInfoList = REPLACE(StudyPhotoInfoList,"\\\\&quo ...

  9. osg geometry清空vertex

    _vertices->clear(); _vertices->dirty(); _drawArrays->set(sog::PrimitiveSet::POINTS,0,0); _g ...

  10. docker load tar.gz包失败解决方法

    执行docker load -i xxx.tar.gz时候报错 open /var/lib/docker/xxx No such file or directory 这种情况属于容器快照文件缺乏基础镜 ...