真实项目应用的java发送邮件,应该还待进一步完善。

依赖 mail-1.4.jar

jar包下载地址: http://mvnrepository.com/artifact/javax.mail/mail/1.4.7

import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

Mail.java

package com.testdemo.tool.zsmail;

import java.io.Serializable;

/**
* Mail属性实体
*
* @author shadow
*
*/
@SuppressWarnings("serial")
public class Mail implements Serializable { public static final String ENCODEING = "UTF-8"; private String sender;// ProperUtil.get("mail_account"); // 发件人的邮箱 private String name; // 发件人昵称 private String subject; // 主题 private String message; // 信息(支持HTML) private String[] receivers; // 收件人的邮箱 public String getSender() {
return sender;
} public void setSender(String sender) {
this.sender = sender;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getSubject() {
return subject;
} /**
* 设置主题
*
* @param subject
*/
public void setSubject(String subject) {
this.subject = subject;
} public String getMessage() {
return message;
} /**
* 设置发送消息
*
* @param message
*/
public void setMessage(String message) {
this.message = message;
} public String[] getReceivers() {
return receivers;
} /**
* 设置接收者
*
* @param receivers
*/
public void setReceivers(String[] receivers) {
this.receivers = receivers;
} }

MailTool.java

package com.testdemo.tool.zsmail;

import java.util.Date;
import java.util.Properties; import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart; import java.util.HashMap; public class MailTool { private static Properties prop = new Properties();
private static Session session = null; static {
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.host", "smtp.qq.com");//邮件服务器
prop.put("mail.smtp.port", "25");
prop.put("mail.transport.protocol", "smtp");
prop.put("mail_account", "");//qq帐号
prop.put("mail_password", "");//qq密码 if (null == session)
session = Session.getInstance(prop);
} public static synchronized HashMap<String, Object> sendMail(Mail mail) {
String error = "";
boolean b = false;
Message msg = null;
BodyPart messageBodyPart = null;
Multipart multipart = null;
Transport tran = null;
try {
msg = new MimeMessage(session); // 建立信息
messageBodyPart = new MimeBodyPart();
multipart = new MimeMultipart();
msg.setFrom(new InternetAddress(prop.getProperty("mail_account"))); // 发件人
InternetAddress[] receivers = InternetAddress.parse(getMailList(mail.getReceivers()));
msg.setRecipients(Message.RecipientType.TO, receivers); // 收件人
msg.setSentDate(new Date()); // 发送日期
msg.setSubject(mail.getSubject()); // 主题
msg.setText(mail.getMessage()); // 内容
// 显示以html格式的文本内容
messageBodyPart.setContent(mail.getMessage(), "text/html;charset=UTF-8");
multipart.addBodyPart(messageBodyPart);
msg.setContent(multipart);
tran = session.getTransport("smtp");
tran.connect(prop.getProperty("mail.smtp.host"), prop.getProperty("mail_account"), prop.getProperty("mail_password"));
tran.sendMessage(msg, msg.getAllRecipients()); // 发送
b = true;
} catch (Exception e) {
e.printStackTrace();
b = false;
error = e.getMessage();
} finally {
System.out.println("邮件发送" + (b == true ? "成功" : "失败"));
try {
if (null != tran)
tran.close();
} catch (MessagingException e) {
e.printStackTrace();
}
}
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("status", b);
map.put("error", error);
return map;
} public static String getMailList(String[] mailArray) {
StringBuffer toList = new StringBuffer();
int length = mailArray.length;
if (mailArray != null && length < 2) {
toList.append(mailArray[0]);
} else {
for (int i = 0; i < length; i++) {
toList.append(mailArray[i]);
if (i != (length - 1)) {
toList.append(",");
}
}
}
return toList.toString();
} public static void help(){
System.out.println(
"public static void main(String[] args) {\n"+
"\tMail mail = new Mail();//基本对象\n"+
"\tmail.setReceivers(new String[] { \"1713930654@qq.com\", \"xiao@163.com\" });//接收者数组\n"+
"\tmail.setSubject(\"subject\");//主题\n"+
"\tmail.setMessage(\"message\");//内容\n"+
"\tsendMail(mail);//发送\");\n"+
"}");
} public static void main(String[] args) {
// Mail mail = new Mail();//基本对象
// mail.setReceivers(new String[] { "1713930654@qq.com", "389522975@qq.com" });//接收者数组
// mail.setSubject("subject");//主题
// mail.setMessage("message");//内容
// sendMail(mail);//发送
help();
}
}

其它

java mail(发送邮件--163邮箱)

javamail 发送邮件失败(被网易禁止)解决办法

开启 SSL 加密

抄送

用java发邮件之一 (直接源于真实项目) 【原】的更多相关文章

  1. Java发邮件:Java Mail与Apache Mail

    作者:Vinkn 来自http://www.cnblogs.com/Vinkn/ 一.邮件简介 一封邮件由很多信息构成,主要的信息如下,其他的暂时不考虑,例如抄送等: 1.收件人:收件人的邮箱地址,例 ...

  2. 阿里云服务器25端口禁用之如何使用Java发邮件(解决25端口禁用问题)

    通常我们在本地使用Java发送邮件,通常是没有问题的,但是部署到服务器的话,就可能遇到问题.当然了,这与运营商也有关系.比如我之前在咖啡主机上购买虚拟机,然后将个人网站部署上去,通常是没有问题的,没有 ...

  3. Java发邮件基础篇

    1. 电子邮件协议 电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP.其中邮件的创建和发送只需要用到 SMTP协议,所以本文也只会涉及到SMTP ...

  4. java 发邮件

    //先从oracle 下载mail.jarpackage test; import javax.mail.BodyPart; import javax.mail.Message; import jav ...

  5. Java发邮件带附件测试通过

    package cn.bric.crm.util; import java.util.Date; import java.util.Enumeration; import java.util.Prop ...

  6. java 发邮件 代码

    /** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...

  7. Java发邮件带附件(且重命名附件)

    环境:spring3.2.2+jquery 用户的附件管理要实现发送附件可以是单个也可以是多个.由于用户在上传附件的时候采用了重命名机制,所以存在服务器上的文件是重命名后的文件,如果用户要将文件以邮件 ...

  8. java windows自动化-mail自动发邮件

    本文旨在让测试人员了解如何发邮件 发邮件的话,最简单的事是直接手动发邮件,但是在自动化测试中,应做到让机器或者代码来自动发送邮件,笔者大概了解以下几种方法,总有一款口味适合你:1java代码来做下面即 ...

  9. 使用SpringBoot发邮件

    SpringBoot中已有发邮件的工具包,只需要引用即可使用 1,pom引用 <dependency> <groupId>org.springframework.boot< ...

随机推荐

  1. [2017BUAA软件工程]第0次博客作业

    [2017BUAA软件工程]第0次博客作业 结缘计算机 你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 计算机是你喜欢的领域吗?是你擅长的领域吗? 我当时报考高考志愿的时候就已经是想好报 ...

  2. [2017BUAA软工]第0次博客作业

    第一部分:结缘计算机 1.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 当初选择计算机专业作为自己报考大学的第一志愿,主要是看重了市场对于计算机行业人士的巨大需求,同时也感慨于计算机行 ...

  3. eclipse html 打开方式

    1. HTML Editor是有HTML语法着色的模式(类似于Notepad++里的效果),适用于大的HTML,这样复制剪贴效率较高,且有语法高亮. 2.Web Page Editor图形设计模式,类 ...

  4. apply方法和call方法。函数属性与方法。

    每个函数都有length属性哥prototype属性. length属性表示的是函数接入参数的个数 在es引用类型语言中,prototype是保存它们所有实例方法的真正所在.换句话来说,类似于toSt ...

  5. linux 终端快捷操作

    终端一些常用快捷键 按键 作用 Ctrl+d 键盘输入结束或退出终端 Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行 Ctrl+z 将当前程序放到后台运行,jobs命令查看后台工作,命令&quo ...

  6. 如何使用grep 等命令快速的在日志中找到自己需要的内容

    虽然使用linux也有好几年了,但是服务器端开发的活儿正经来算才干不到一年. 一直没有需求和机会会去花大量的时间排查日志啥的,直到我摊上了大事t t,写的代码在线上出了bug需要排查问题. grep可 ...

  7. python代码格式检查工具部署pre_commit

    如何使用pre_commit?1. 合并该分支 2. 在git根目录下使用pre-commit install即可3. 如果没有装pre-commit 安装一下pip install pre-comm ...

  8. linux ubuntu nethogs安装与介绍

    安装nethogs: apt-get -y install ncurses* apt-get -y install libpcap-dev libncurses5-dev wget -c https: ...

  9. html 框架 內聯框架

    框架的作用:可以在瀏覽器同時顯示不止一個html頁面.一個html文檔也叫做一個框架. 垂直框架:設置窗口垂直排列顯示成一行 <frameset cols="20%,80%" ...

  10. Django-website 程序案例系列-10 cookie 和 session的应用

    cookie:  现在所有网站基本都要开启cookie 客户端浏览器上的一个文件 例如:   {‘key’: 'sefwefqefwefw'} 是一个键值对 简单实现cookie认证: user_in ...