javamail邮件发送例子
public class EmailTask
{
// Session used by the javamail classes
private Session session;
// List of messages邮件发送信息对象列表
private List<Message> messages = null;
/**构造方法
* Creates a new EmailTask.
*/
public EmailTask()
{
//邮件发送入参Properties,用来设置参数
Properties mailProps = new Properties();
//邮件服务器地址:域名或ip
String host = "smtpscn.test.com";
//邮件服务器端口,默认25
String port = "25";
//是否开启TLS方式发送,1 是,0 否.默认否
String startTLS = "0";
//是否验证证书,1 是,0 否.默认是
String cert = "0";
//是否鉴权true false
String isAuth = "true";
//鉴权账号
final String account = "zWX161496";
//鉴权密码
final String pwd = "Asd123";
if (host != null && !"".equals(host))
{
mailProps.setProperty("mail.smtp.host", host);
}
if (port != null && !"".equals(port))
{
mailProps.setProperty("mail.smtp.port", port);
}
//如果开始TLS方式
if ("1".equals(startTLS))
{
mailProps.setProperty("mail.smtp.starttls.enable", "true");
//是否验证证书
if ("0".equals(cert))
{
mailProps.setProperty("mail.smtp.ssl.trust", "*");
}
}
//是否鉴权:true false
mailProps.setProperty("mail.smtp.auth", isAuth);
// Create the mail session, check authenticator
session = Session.getInstance(mailProps, new Authenticator()
{
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(account, pwd);
}
});
messages = new LinkedList();
}
/**发送一批邮件
* 如果调用该方法,将不会通过单独起一个线程的方式来发送邮件
* 好处是如果发送失败可以立即返回结果
* 缺点是不适合频率较高的操作
*/
public void sendMessage()
{
try
{
Iterator<Message> messageIterator = messages.iterator();
while (messageIterator.hasNext())
{
Message message = messageIterator.next();
Transport.send(message);
}
}
catch (MessagingException me)
{
//
}
catch (Exception e)
{
//
}
}
/**
* 构造Message
* @param toName the name of the recipient of this email.
* @param toEmail the email address of the recipient of this email.
* @param fromName the name of the sender of this email.
* @param fromEmail the email address of the sender of this email.
* @param subject the subject of the email.
* @param body the body of the email.
*/
public void addMessage(String toName, String toEmail, String fromName,
String fromEmail, String subject, String body)
{
if (toEmail == null || fromEmail == null || subject == null
|| body == null)
{
DebugLogFactory.debug(MailTmplTool.class,
"Error sending email in EmailTask.java: Invalid fields.");
}
else
{
try
{
Message message = createMessage();
Address to = null;
Address from = null;
if (toName != null)
{
to = new InternetAddress(toEmail, toName);
}
else
{
to = new InternetAddress(toEmail);
}
if (fromName != null)
{
from = new InternetAddress(fromEmail, fromName);
}
else
{
from = new InternetAddress(fromEmail);
}
message.setRecipient(Message.RecipientType.TO, to);
message.setFrom(from);
message.setSubject(subject);
message.setSentDate(new Date());
message.setHeader("Content-Transfer-Encoding", "BASE64");
message.setContent(body, "text/html;charset=UTF-8");
messages.add(message);
}
catch (Exception e)
{
//
}
}
}
/**
*
* @return A new JavaMail message.
*/
public Message createMessage()
{
return new MimeMessage(session);
}
}
补充:可以使用多线程发送发送,好处是不影响主线程,可以立即返回。
创建一个链表LinkedList(可包装为邮件发送工厂),用来存放每个邮件任务对象,启用几个线程如6个,每次发邮件时,将发邮件任务对象添加到LinkedList,注意枷锁,并通知所有线程激活notifyall;
当LinkedList有元素时,这些线程被激活,同时从LinkedList取出任务,注意加锁,本别发送;
当列表为空时,就挂起wait。
javamail邮件发送例子的更多相关文章
- Spring的javaMail邮件发送(带附件)
项目中经常用到邮件功能,在这里简单的做一下笔记,方便日后温习. 首先需要在配置文件jdbc.properties添加: #------------ Mail ------------ mail.smt ...
- JavaMail邮件发送不成功的那些坑人情况及分析说明
[我的Segmentfault原文]https://segmentfault.com/a/1190000008030346 前言 JavaMail的使用本身并不难,网上有不少案例,简单易懂,而且有 ...
- javaMail 邮件发送和接收示例,支持正文图片、html、附件(转)
转自:https://blog.csdn.net/star_fly4/article/details/52037587 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文 ...
- JavaMail 邮件发送
jar包部署 /** * 通过SMTP进行邮件集成 */ public class CmpSendMail { // 邮件发送服务器主机 private final static String HOS ...
- 应用层之E-mail服务及javaMail邮件发送的知识总结
关于Email服务你需要知道的知识点: 概述: 今天来介绍一下应用层的电子邮件服务,我们每天几乎都在用,电子邮件(email)服务也是一种基于C/S模式的服务,它采用的是一种"存储-转发&q ...
- javaMail邮件发送的简单实现
package com.test.mail; import java.util.Properties; import javax.mail.Message; import javax.mail.Ses ...
- (转)JavaMail邮件发送-发送一个文本邮件和一些问题说明
需要下载的JAR包: JavaMail:http://www.oracle.com/technetwork/java/javamail/index.html JAF:http://www.oracle ...
- 带有附件及图片正文的JavaMail邮件发送
1 package javamail; 2 3 import java.io.UnsupportedEncodingException; 4 import java.util.Properties; ...
- javamail邮件发送
// 发送邮件 public static void send(String toEmail, String content) { Session session = getSession(); tr ...
随机推荐
- NumberFormat usage
NumberFormat 是所有数值格式的抽象基类. 该类提供了格式化和分析数值的接口. NumberFormat 也提供了确定 哪个语言环境具有数值格式以及它们名字的方法. import java. ...
- JavaScript 设计模式 - 工具函数
1.类式继承,模拟面向对象语言的继承方式 function extend(subClass, superClass) { var F = function() {}; F.prototype = su ...
- html 问题
1.footer处理 目标: 页面较短,footer位于页面底部,出现滚动条时,依然在原来的位置,不随滚动条移动 页面较长,位于元素底部 .container{ position: relative ...
- 作业七:团队项目——Alpha版本冲刺阶段-01
昨天进展:准备开发环境,安装软件. 今天安排:软件框架设计. 小组一共三人,陈芝航因家里有事,与我们进行了QQ视屏会议.
- 调研一类软件的发展演变—聊天软件( 1000-2000 words, in Chinese)
因为本人平时对聊天软件的涉及比周边其他同学而言所涉及的是比较多的.所以说想写写这个东西.(ps本文里面的具体通讯信息的时间安排不分先后) 也许最起初的通讯信息的传达是利用.烽火狼烟这一类可以远距离视觉 ...
- memcache(一)概述
概述 memcache是一种支持分布式的缓存系统,基于网络连接(当然它也可以使用localhost)方式完成服务,本身它是一个独立于应用的程序或守护进程(Daemon方式). 本地缓存 memcach ...
- 自制操作系统(二) 让bootsector开机启动打印一首诗
qq:992591601 欢迎交流 2016-03-31作 2016-06-01.2016-06-27改 我总结了些基本原理: 1.软盘的第一个扇区为启动区 2.计算机读软盘是以512字节为单位来读写 ...
- paip.提升性能---并行多核编程哈的数据结构list,set,map
paip.提升性能---并行多核编程哈的数据结构list,set,map vector/copyonwritearraylist 都是线程安全的. 或者经过包装的list ::: collection ...
- 微信小程序笔记(二)
微信小程序环境搭建与开发工具介绍 2-1 开篇介绍及下载工具 1.开发工具下载地址: http://t.cn/RVKH0HS 2.下载安装对应版本:win32,win64,mac; 2-2 小程序 ...
- 360[警告]跨站脚本攻击漏洞/java web利用Filter防止XSS/Spring MVC防止XSS攻击
就以这张图片作为开篇和问题引入吧 <options>问题解决办法请参考上一篇 如何获取360站长邀请码,360网站安全站长邀请码 首先360能够提供一个这样平台去检测还是不错的.但是当体检 ...