public class MailSender {
final static Logger logger = Logger.getLogger(MailSender.class);
/**
* 发送简单邮件
* @param str_from:发件人地址
* @param str_to:收件人地址
* @param str_title:邮件标题
* @param str_content:邮件正文
* @param emailPwd:邮件密码
*/
@SuppressWarnings("finally")
public static void send(String str_to, String str_title,String str_content){
boolean flog=false;
logger.info("sending... To: " + str_to + " Mail Title: " + str_title + " fileAttachment: " + str_content);
Properties props = new Properties();
ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); try {
props.load(classLoader.getResourceAsStream("mail.properties")); //使用property读取文件
} catch (IOException e) {
e.printStackTrace();
}
String str_from = props.getProperty("mail.from");
String emailPwd = props.getProperty("mail.password");

final String mailServer_163 = props.getProperty("mail.smtp.163.mailServer");
final String mailServer_qq = props.getProperty("mail.smtp.qq.mailServer");
final String mailServer_Sina = props.getProperty("mail.smtp.sina.mailServer");
String mailServer = "";
String emailType = Tools.subString(str_from, "@"); //截取@前
String eName = Tools.subberString(str_from,"@");
if (emailType.trim() != "" && emailType.equals("qq.com")) {
mailServer = mailServer_qq;
}
if (emailType.trim() != "" && emailType.equals("163.com")) {
mailServer = mailServer_163;
}
if (emailType.trim() != "" && emailType.equals("sina.com.cn")) {
mailServer = mailServer_Sina;
}
if (emailType.trim() != "" && emailType.equals("sina.com")) {
mailServer = mailServer_Sina;
}
// 存储发送邮件服务器的信息
props.put("mail.smtp.host", mailServer);
// 同时通过验证
props.put("mail.smtp.auth", "true");
// 根据属性新建一个邮件会话
Session s = Session.getInstance(props);
s.setDebug(true); // 有他会打印一些调试信息。
// 由邮件会话新建一个消息对象
MimeMessage message = new MimeMessage(s);
// 设置邮件
InternetAddress from = null;
try {
from = new InternetAddress(str_from);
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // pukeyouxintest2@163.com
try {
message.setFrom(from);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 设置发件人的地址
// //设置收件人,并设置其接收类型为TO
InternetAddress to = null;
try {
to = new InternetAddress(str_to);
} catch (AddressException e) {
e.printStackTrace();
}
try {
message.setRecipient(Message.RecipientType.TO, to);
// 设置标题
message.setSubject(str_title); // java学习
// 设置信件内容
// message.setText(str_content); //发送文本邮件 //你好吗?
message.setContent(str_content, "text/html;charset=gbk"); // 发送HTML邮件
// 设置发信时间
message.setSentDate(new Date());
// 存储邮件信息
message.saveChanges();
} catch (MessagingException e) {
e.printStackTrace();
} // 发送邮件
Transport transport = null;
try {
transport = s.getTransport("smtp");
} catch (NoSuchProviderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 以smtp方式登录邮箱,第一个参数是发送邮件用的邮件服务器SMTP地址,第二个参数为用户名,第三个参数为密码
try {
transport.connect(mailServer, eName, emailPwd) ;
} catch (MessagingException e) {
e.printStackTrace();
}
// 发送邮件,其中第二个参数是所有已设好的收件人地址
try {
transport.sendMessage(message, message.getAllRecipients());
} catch (MessagingException e) {
e.printStackTrace();
}
try {
transport.close();
} catch (MessagingException e) {
e.printStackTrace();
} } /**
* 异步发送邮件的方法*/
public static void sendMailByAsynchronous(final String str_to, final String str_title, final String str_content) throws Exception{
new Thread(new Runnable() {
public void run() {
try {
MailSender.send(str_to, str_title, str_content);
} catch (Exception ex) {
logger.error("mail sender error To: " + str_to
+ " Mail Title: " + str_title + " fileAttachment: "
+ str_content, ex);
}
}
}).start();
} }

 mail.properties

mail.smtp.163.mailServer=smtp.163.com

mail.smtp.qq.mailServer=smtp.qq.com

mail.smtp.sina.mailServer=smtp.sina.com.cn

mail.username=asd

mail.password=123456

mail.from=asd@163.com

 Tool.java

public class Tools {
public static String subString(String content,String start){
String subConetent=content.substring(content.indexOf(start)+1, content.length());
return subConetent;
}
public static String subberString(String content,String end){
String subConetent=content.substring(0,content.indexOf(end));
return subConetent;
}
}

调用方法:

MailSender.sendMailByAsynchronous("123@126.com","topic:"+a.getAskTitle(), "content:"+a.getAskContent()+"/n请你及时回复");

jar包:mai.jar

  

简单的邮件发送mail.jar的更多相关文章

  1. java简单的邮件发送

    java实现简单的邮件发送案例,学会了这个你就可以利用这个来整你的好友了,不断地给他进行邮箱轰炸(当然个人不建议瞎搞),最重要的是明白其中的原理最好了.话不多说,直接看代码案例了.首先需要导入的jar ...

  2. .Net(C#)最简单的邮件发送案例

    一.序言 刚开始接触邮件发送功能的时候,在网上找的资料都挺复杂的!对于新手入门有点难(至少对于本人来说,第一次接触的时候确实不容易).这里就写一段简单的邮箱发送代码,备忘,也给新手一个参考(相关类的字 ...

  3. mailto - 简单多媒体邮件发送程序

    SYNOPSIS mailto  [-a] [-c] [-s] [recipient name(s)] DESCRIPTION mailto 程序是一个用于发送MIME格式的多媒体邮件(MIME格式是 ...

  4. 发送邮件(遵循smtp协议即简单的邮件发送协议)

    HandleSendEmail.aspx逻辑 protected void Page_Load(object sender,EventArgs e) { foreach(var item in Req ...

  5. [PHP] 邮件发送mail()函数失败问题 sendmail命令与postfix

    1. php的mail()函数是可以发送邮件的 , 但是一直就没有测试成功过 , 现在总结一下原因 : php的mail函数 基于sendmail命令来发送 , sendmail命令需要安装postf ...

  6. [vb.net]最简单的邮件发送

    Imports Microsoft.Office.Interop.Outlook Private Sub sendMail() Dim outObj As New Application Dim it ...

  7. 通过smtp协议简单实现邮件发送

    使用到的类: ①SmtpClient--发送邮件的类(using System.Net.Mail;) ②MailMessage--初始化邮件的类 ③ NetworkCredential--身份验证的类 ...

  8. C#真他妈神奇,一个函数都不用写就能实现一个简单的邮件发送工具

    MailMessage EmaillMessage = new MailMessage(   //创建一个对象                    new MailAddress(loning.Te ...

  9. Java Mail 邮件发送Demo

    上周公司的项目要求开发邮件发送功能.自己在网上跟着教程边学边做了一下午,现在基本开发完成了.由于一个同事也想看下该怎么写,顺便学习下.所以我就写成了一遍教程,顺便巩固下邮件发送里面的内容. Demo ...

随机推荐

  1. VMware Workstation “无法连接 MKS: 套接字连接尝试次数太多;正在放弃。” 解决方法【转】

    今天和往常一样打开电脑,打开VMware Workstation,打开其中的一台虚拟机,以前都是这么打开没有问题,今天打开虚拟机突然提示“无法连接 MKS: 套接字连接尝试次数太多:正在放弃.”. 经 ...

  2. 在Visual Studio中编译Linux的一些问题

    相对路径: 在windows下,和当前文件同一个目录下的引用会这么写: #include "SubDirectory\header.h" 或者 #include "Sub ...

  3. uoj#351. 新年的叶子(概率期望)

    传送门 数学还是太差了,想了半天都没想出来 首先有一个定理,如果直径(这里考虑经过的点数)为奇数,所有直径有同一个中点,如果直径为偶数,所有直径有同一条最中间的边.这个可以用反证法,假设不成立的话直径 ...

  4. VBA for AutoCAD

    Download the Microsoft Visual Basic for Applications Module (VBA) 2016 Downloads AutoCAD 2016 VBA mo ...

  5. 源码构建Apollo以及改造

    1. 下载release版本 本次构建的是1.4.0的版本 2. 初始化数据库信息 数据库表信息 2.1 修改注册中心配置 初始化数据库表后,需要修改 ApolloConfigDB.ServerCon ...

  6. 你必须学写 Python 装饰器的五个理由

    你必须学写Python装饰器的五个理由 ----装饰器能对你所写的代码产生极大的正面作用 作者:Aaron Maxwell,2016年5月5日 Python装饰器是很容易使用的.任何一个会写Pytho ...

  7. maven 参考

    系列文章,通俗易懂,可以看看 http://www.cnblogs.com/AlanLee/category/918828.html

  8. JavaScript进阶 - 第8章 浏览器对象

    第8章 浏览器对象 8-1 window对象 window对象是BOM的核心,window对象指当前的浏览器窗口. window对象方法:

  9. java模拟多线程

    public class HTTPRequest  implements Runnable { public void run() { //这里实现发送请求 } public static void ...

  10. 关于java多线程任务执行时共享资源加锁的方式思考

    1.加锁方式: 1-1.使用synchronized关键字进行方法或代码块的加锁方式 1-2.使用ReentrantLock类提供的lock()方法的方式 2.代码实现(传统的银行取款存款问题): 2 ...