MailUtils

/***包名:com.thinkgem.jeesite.test*描述:package com.thinkgem.jeesite.test;*/
package com.thinkgem.jeesite.test;import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import javax.mail.internet.MimeMessage;import org.apache.commons.mail.HtmlEmail;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;import com.jjqkkkaa.posp.common.utils.DateUtils;/*** MailUtilsss.java* 版权所有(C) 2018 裕福控股有限公司* 创建:gll * 时间:2018年2月8日* 描述:MailUtils*/
public class MailUtils {private static final String from = "aaaaaaaaa@163.com";private static final String fromName = "测试公司";private static final String charSet = "utf-8";private static final String username = "aaaaaaaa@163.com";private static final String password = "123456";private static Map<String, String> hostMap = new HashMap<String, String>();static {// 126hostMap.put("smtp.126", "smtp.126.com");// qqhostMap.put("smtp.qq", "smtp.qq.com");// 163hostMap.put("smtp.163", "smtp.163.com");// sinahostMap.put("smtp.sina", "smtp.sina.com.cn");// tomhostMap.put("smtp.tom", "smtp.tom.com");// 263hostMap.put("smtp.263", "smtp.263.net");// yahoohostMap.put("smtp.yahoo", "smtp.mail.yahoo.com");// hotmailhostMap.put("smtp.hotmail", "smtp.live.com");// gmailhostMap.put("smtp.gmail", "smtp.gmail.com");hostMap.put("smtp.port.gmail", "465");}public static String getHost(String email) throws Exception {Pattern pattern = Pattern.compile("\\w+@(\\w+)(\\.\\w+){1,2}");Matcher matcher = pattern.matcher(email);String key = "unSupportEmail";if (matcher.find()) {key = "smtp." + matcher.group(1);}if (hostMap.containsKey(key)) {return hostMap.get(key);} else {throw new Exception("unSupportEmail");}}public static int getSmtpPort(String email) throws Exception {Pattern pattern = Pattern.compile("\\w+@(\\w+)(\\.\\w+){1,2}");Matcher matcher = pattern.matcher(email);String key = "unSupportEmail";if (matcher.find()) {key = "smtp.port." + matcher.group(1);}if (hostMap.containsKey(key)) {return Integer.parseInt(hostMap.get(key));} else {return 25;}}/*** 发送普通邮件* * @param toMailAddr*            收信人地址* @param subject*            email主题* @param message*            发送email信息*/public static void sendCommonMail(String toMailAddr, String subject,String message) {HtmlEmail hemail = new HtmlEmail();try {hemail.setHostName(getHost(from));hemail.setSmtpPort(getSmtpPort(from));hemail.setCharset(charSet);hemail.addTo(toMailAddr);hemail.setFrom(from, fromName);hemail.setAuthentication(username, password);hemail.setSubject(subject);hemail.setMsg(message);hemail.send();System.out.println("email send true!");} catch (Exception e) {e.printStackTrace();System.out.println("email send error!");}}public static void main(String[] args) {try {sendInlineMail();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}// 发送带内嵌文件的HTML格式邮件public static void sendInlineMail() throws Exception {String smtp = "smtp";String host = "smtp.163.com";String sslIs ="true";String authIs = "true";String userName = "aa@163.com";String password = "aa#";// spring提供的邮件实现类JavaMailSenderImpl send = new JavaMailSenderImpl();Properties prop = new Properties();prop.setProperty("mail.transport.protocol", smtp); // 设置邮件发送协议prop.setProperty("mail.host", host); // 邮件服务器地址prop.setProperty("mail.smtps.ssl.enable", sslIs); // 邮件ssl验证prop.setProperty("mail.smtp.auth", authIs); // 邮件服务身份验证send.setUsername(userName); // 设置用户名send.setPassword(password); // 设置密码send.setJavaMailProperties(prop);MimeMessage msg = send.createMimeMessage();// 指定HTML编码,参数true表示为multipartMimeMessageHelper helper = new MimeMessageHelper(msg, true, "UTF-8");helper.setFrom(userName); // 发送者邮箱helper.setTo("800@163.com"); // 接收者邮箱// helper.setCc(CC_MAIL); // 抄送邮箱// helper.setBcc(BCC_MAIl); // 密送邮箱helper.setSentDate(new Date()); // 发送日期helper.setSubject("工资条(" + DateUtils.getDate("yyyy-MM-dd HH:mm:ss")+ ")");String html = "<font size='5' color='red'>HTML格式测试成功!</font>";helper.setText(html, true); // 邮件内容,参数true表示是html代码send.send(msg); // 发送邮件}}

  

转载于:https://www.cnblogs.com/guoziyi/p/8432331.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES6遍历对象

遍历对象 E S 6 一共有 5 种方法可以遍历对象的属性 。 for ... in for . . . in 循环遍历对象自身的和继承的可枚举属性&#xff08;不含 Symbol 属性&#xff09;。 Object.keys(obj)Object . keys 返回 一个数组&#xff0c;包括对象自身的&#xff08;不含继承的 &#xff…

SpringMvc中ModelAndView模型的应用

/** * 目标方法的返回值可以是 ModelAndView 类型。 * 其中可以包含视图和模型信息 * SpringMVC 会把 ModelAndView 的 model 中数据放入到 request 域对象中. * return */ RequestMapping("/testModelAndView") public ModelAndView testModelAndView(){ String v…

ubuntu16.04 + ros-kinetic 配置cartographer

其实一直以来都感觉纯视觉SLAM很难落地产品&#xff0c;所以一直在找机会学习激光slam,之前也在深蓝学院上买了一个激光salm的课程&#xff0c;惭愧&#xff0c;至今也没开始学呢&#xff0c;年底之前&#xff0c;我想工作之余研究一下激光slam和ros&#xff0c;我感觉这两个东…

virtualbox中安装ubuntu

为什么80%的码农都做不了架构师&#xff1f;>>> virtualboxubuntu 安装virtualbox&#xff0c;当前版本是6.0.4下载ubuntu安装盘&#xff0c;建议lubuntu&#xff0c;链接是http://mirrors.ustc.edu.cn/ubuntu-cdimage/lubuntu/releases/18.04.2/release/lubuntu-1…

面向对象重写(override)与重载(overload)区别

一、重写&#xff08;override&#xff09; override是重写&#xff08;覆盖&#xff09;了一个方法&#xff0c;以实现不同的功能。一般是用于子类在继承父类时&#xff0c;重写&#xff08;重新实现&#xff09;父类中的方法。 重写&#xff08;覆盖&#xff09;的规则&#…

cartographer学习笔记--如何保存cartagrapher_ros建好的地图

今天开始跟着网友大佬学习cartographer. 1. 如何保存cartographer的地图数据 在运行cartographer过程中可以随时保存建好的地图&#xff0c;步骤如下&#xff1a; 首先是重新打开一个terminal, 如果你没有将你的cartographer_ros下的setup.bash文件写入到.bashrc中&#xff…

Java微信公众号开发(五)—— SVN版本控制工具

1 作用 两个疑问&#xff1a; 什么是版本控制&#xff1f;为什么要用版本控制工具&#xff1f;作用&#xff1a; 受保护受约束合作开发中&#xff0c;版本控制工具更重要的作用就是让开发者更好地协作&#xff0c;每个人的代码既能互相调用&#xff0c;来共同完成一个较大的功…

Linux之《荒岛余生》(二)CPU篇

为什么80%的码农都做不了架构师&#xff1f;>>> 温馨提示&#xff0c;动图已压缩&#xff0c;流量党放心查看。CPU方面内容不多&#xff0c;我们顺便学点命令。本篇是《荒岛余生》系列第二篇&#xff0c;垂直观测CPU。其余参见&#xff1a; Linux之《荒岛余生》&am…

PTA 06-图2 Saving James Bond - Easy Version (25分)

题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/672 5-10 Saving James Bond - Easy Version (25分) This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the worlds most famous spy, was captured by…

Ubuntu16.04上安装kitti2bag

kitti2bag是一个可以将kitti数据集转换为bag文件的工具&#xff0c;可以直接通过pip进行安装。由于kitti2bag中使用到ros&#xff0c;所以安装时你使用的python版本应该是2.7的因为ros只有在Python2.7时才能正常工作。比如说我&#xff0c;我安装了conda&#xff0c;在conda中安…

Nginx之windows下搭建

去nginx.org下载nginx 以nginx-1.8.1为例解压到D盘nginx-1.8.1目录 假设NGINX_HOME为D:\nginx-1.8.1 3种启动途径&#xff1a; 一、双击nginx.exe图标&#xff0c;可见黑窗口一闪而过&#xff0c;启动完毕。 二、命令行到nginx目录&#xff0c;输入nginx启动。&#xff08;注&a…

单片机错误笔记

记录下使用单片机过程中的一些错误&#xff0c;便于以后查询&#xff1a; 单片机型号&#xff1a;STC15F2K60S2 晶振&#xff1a;18.432 报错代码&#xff1a; *** WARNING L1: UNRESOLVED EXTERNAL SYMBOLSYMBOL: REC_DAT1MODULE: .\Objects\usart.obj (USART) …

软件开发记录03

今天我完成了软件设置&#xff0c;预算列表&#xff0c;添加预算的页面布局。 &#xff08;1&#xff09;软件设置 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"…

395. Longest Substring with At Least K Repeating Characters

题目要求 Find the length of the longest substring T of a given string (consists of lowercase letters only) such that every character in T appears no less than k times.Example 1:Input: s "aaabb", k 3Output: 3The longest substring is "aaa&qu…

UICollectionView 具体解说学习

UICollectionView 和UITableView非常像,是APPLE公司在iOS 6后推出的用于处理图片这类UITableView 布局困难的控件,和UITableView 一样,它也有自己的Datasource和delegate。以下具体说下像这种方式的效果. 首先来看看UICollectionView 的DataSource。protocol UICollectionView…

70.文件异常

ferror检测文件异常perror提示文件错误信息clearerr清除异常,让文件指针回到开头完整代码 1 #define _CRT_SECURE_NO_WARNINGS2 #include<stdio.h>3 #include<stdlib.h>4 //perror提示文件错误信息5 //ferror检测文件异常6 //clearerr清除异常,让文件指针回到开头…

ServiceNow 中关于UI Action 在portal端的使用

在 portal端是可以使用Form和UI Action的&#xff0c;例如&#xff1a;var data.f $sp.getForm()&#xff1b;//需要添加上相应参数在开箱组件Form的Server script中就有如下代码&#xff1a;data.f $sp.getForm(data.table, data.sys_id, data.query, data.view);data.f对象中…

特殊密码锁

总时间限制: 1000ms内存限制: 1024kB描述有一种特殊的二进制密码锁&#xff0c;由n个相连的按钮组成&#xff08;n<30&#xff09;&#xff0c;按钮有凹/凸两种状态&#xff0c;用手按按钮会改变其状态。 然而让人头疼的是&#xff0c;当你按一个按钮时&#xff0c;跟它相邻…

系统安全题目(二)

1、在 php mysql apache 架构的web服务中输入GET参数 index.php?a1&a2&a3 服务器端脚本 index.php 中$GET[a] 的值是&#xff1f;正确答案: C A 1B 2C 3D 1,2,3 2、以下哪些不是CSRF漏洞的防御方案&#xff1f;正确答案: D A 检测HTTPrefererB 使用随机tokenC 使用验…

转发和重定向的区别?

实际发生位置不同&#xff0c;地址栏不同 转发是发生在服务器的 转发是由服务器进行跳转的&#xff0c;细心的朋友会发现&#xff0c;在转发的时候&#xff0c;浏览器的地址栏是没有发生变化的&#xff0c;在我访问Servlet111的时候&#xff0c;即使跳转到了Servlet222的页面&a…