Java程序发送邮件
之前上网有看到过别人总结的使用java程序发送邮件,于是自己下来练习,把自己学习的一些心得总结出来.
首先我们这里需要采用两个jar包:

需要的朋友可以自行上网去CSDN类似的网站上面找
顺便把自己测试用例贴了出来,里面有些详细的注释,接下来会提醒写demo的时候大家一些注意的地方.把中间有自己遇到的问题.贴出来供大家参考.
1.首先确保发送人的邮箱 跟 接收人的邮箱 的smtp协议开着. ------》可以上邮箱设置里面打开.

这里使用的QQ邮箱 我们可以在邮箱帮助中找到QQ邮箱的pop3跟smtp服务器地址已经开放的相应端口 一般是465,或者是587

2.极其重要一点:现在很多邮箱都采用授权码的方式对第三方开放 pop3跟smtp服务 ,所以我们在用邮箱账户密码登录邮箱时,记得要把密码换成相应的 授权码.
(需要我们手机去发短信验证的)

3.我们测试发送的邮件内容有可能被邮件服务器当成是垃圾邮件拦截掉,这里我们需要设置下.将其加入到邮件的白名单中,可避开反垃圾误判

4.针对发送失败的错误,我们可以仔细分析出错的code码,上网查找对应的错误码信息,找到错误的原因.
这里针对发送邮箱是网易来说:
http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html

测试demo如下:
package Test;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Testmail {
// 发送邮件的账号
public static String ownEmailAccount = "xxxxxxxxxx@163.com";
// 发送邮件的密码------》授权码
public static String ownEmailPassword = "xxxxxxxxxxx";
// 发送邮件的smtp 服务器 地址
public static String myEmailSMTPHost = "smtp.163.com";
// 发送邮件对方的邮箱
public static String receiveMailAccount = "xxxxxxxxxx@qq.com";
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
// 设置邮件传输采用的协议smtp
prop.setProperty("mail.transport.protocol", "smtp");
// 设置发送人邮件服务器的smtp地址
// 这里以网易的邮箱smtp服务器地址为例
prop.setProperty("mail.smtp.host", myEmailSMTPHost);
// 设置验证机制
prop.setProperty("mail.smtp.auth", "true");
// SMTP 服务器的端口 (非 SSL 连接的端口一般默认为 25, 可以不添加, 如果开启了 SSL 连接,
// 需要改为对应邮箱的 SMTP 服务器的端口, 具体可查看对应邮箱服务的帮助,
// QQ邮箱的SMTP(SLL)端口为465或587, 其他邮箱自行去查看)
/*final String smtpPort = "465";
prop.setProperty("mail.smtp.port", smtpPort);
prop.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
prop.setProperty("mail.smtp.socketFactory.fallback", "false");
prop.setProperty("mail.smtp.socketFactory.port", smtpPort);*/
// 创建对象回话跟服务器交互
Session session = Session.getInstance(prop);
// 会话采用debug模式
session.setDebug(true);
// 创建邮件对象
Message message = createSimpleMail(session);
Transport trans = session.getTransport();
// 链接邮件服务器
trans.connect(ownEmailAccount, ownEmailPassword);
// 发送信息
trans.sendMessage(message, message.getAllRecipients());
// 关闭链接
trans.close();
}
/**
* @Title: createSimpleMail
* @Description: 创建邮件对象
* @author: chengpeng
* @param @param session
* @param @return
* @param @throws Exception 设定文件
* @return Message 返回类型
* @throws
*/
public static Message createSimpleMail(Session session) throws Exception {
MimeMessage message = new MimeMessage(session);
// 设置发送邮件地址,param1 代表发送地址 param2 代表发送的名称(任意的) param3 代表名称编码方式
message.setFrom(new InternetAddress("xxxxxxxxx@163.com", "张三", "utf-8"));
// 代表收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiveMailAccount, "李四", "utf-8"));
// To: 增加收件人(可选)
/*message.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress("dd@receive.com", "USER_DD", "UTF-8"));
// Cc: 抄送(可选)
message.setRecipient(MimeMessage.RecipientType.CC, new InternetAddress("ee@receive.com", "USER_EE", "UTF-8"));
// Bcc: 密送(可选)
message.setRecipient(MimeMessage.RecipientType.BCC, new InternetAddress("ff@receive.com", "USER_FF", "UTF-8"));*/
// 设置邮件主题
message.setSubject("测试转发邮件");
// 设置邮件内容
message.setContent("早安,世界 你最近好吗!", "text/html;charset=utf-8");
// 设置发送时间
message.setSentDate(new Date());
// 保存上面的编辑内容
message.saveChanges();
// 将上面创建的对象写入本地
OutputStream out = new FileOutputStream("MyEmail.eml");
message.writeTo(out);
out.flush();
out.close();
return message;
}
}
参考链接:http://blog.csdn.net/xietansheng/article/details/51673073
Java程序发送邮件的更多相关文章
- 20个非常有用的Java程序片段
下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric strin ...
- Java程序片段
下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 ? 1 2 String a = String.valueOf(2); //integer to numer ...
- 整理:20个非常有用的Java程序片段
下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric strin ...
- java实现发送邮件工具
java实现发送邮件的功能:首先需要导入mail.jar: 然后需要写发送方法: 1.邮箱发送封装工具类: package com.wxjiameng.utils; import java.util. ...
- 收集的20个非常有用的Java程序片段
下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric strin ...
- 20个非常有用的Java程序片段--转
原文地址:http://geek.csdn.net/news/detail/236591 下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = ...
- Java实现发送邮件,图片,附件
参照地址 1.JavaMail 介绍 JavaMail 是sun公司(现以被甲骨文收购)为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如前面 ...
- 千万小心,99%的Java程序员会踩这些坑
前言 作为Java程序员的你,不知道有没有踩过一些基础知识的坑. 有时候,某个bug查了半天,最后发现竟然是一个低级错误. 有时候,某些代码,这一批数据功能正常,但换了一批数据就出现异常了. 有时候, ...
- [转载]一个标准java程序员的进阶过程
第一阶段:Java程序员 技术名称 内 容 说明 Java语法基础 基本语法.数组.类.继承.多态.抽象类.接口.object对象.常用类(Math\Arrarys\S ...
随机推荐
- RedHat虚拟机相关操作
在VM虚拟机中安装完Redhat系统之后 如果需要用secureCRT连接linux系统的话 操作步骤如下: 1.进入linux系统,在终端输入ifconfig(注意,不是windows的ipconf ...
- PHP防止sql注入-JS注入
一:为了网站数据安全,所有和数据库操作的相关参数必须做相关过滤,防止注入引起的网站中毒和数据泄漏 1.PHP自带效验函数 mysql_real_escape_string() 函数转义 SQL 语句中 ...
- jmap命令(Java Memory Map)的使用
jmap的使用能够參考: 官方文档 http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html 和这篇博客 http:// ...
- 【OpenGL 学习笔记01】HelloWorld演示样例
<<OpenGL Programming Guide>>这本书是看了忘,忘了又看,赶脚还是把笔记做一做心里比較踏实,哈哈. 我的主题是,好记性不如烂笔头. ========== ...
- 一分钟搞定触手app主页酷炫滑动切换效果
代码地址如下:http://www.demodashi.com/demo/12826.html 前言: 前几天在看手机直播的时候,自己就用上了触手app.一进到主页就看上了里面页面切换的效果,自己想这 ...
- html头部转码
学习html是件比较容易的事情,但单单学html语言肯定是不够用的,所以大多数人并没有拿html作为学习核心,而是将html作为javascript.动态语言或者css学习的必经之路.于是很多人并不关 ...
- web-压力测试学习
https://blog.linuxeye.com/335.html http://bdql.iteye.com/blog/291987 http://www.cnblogs.com/zhuque/a ...
- java swing内嵌浏览器,隐藏滚动条
1 通过定义css样式表来解决 1 html{overflow-y:scoll;overflow:-moz-scrollbars-vertical;} 2 body{width:680px;heigh ...
- ASP.NET CORE RAZOR :向 Razor 页面添加验证
https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/razor-pages/validation 本部分中向 Movie 模型添加了验证逻辑. ...
- mysql innodb_data_file_path配置增加
在配置innodb_data_file_path=ibdata1:200M:autoextend时,想增加空间,默认文件不断增加直到200M,如果要增加大小,直接修改参数增加大小会报错: auto-e ...