起航学习网

- 让每个人都能学到最前沿新知识、新技能!
起航学习网
当前位置: 起航学习网 > 短期培训 > 编程语言 > 这么好用的 Java 中发邮件功能分享了

这么好用的 Java 中发邮件功能分享了

时间:2018-12-11 13:13:27来源:编程网 作者:IT培训网 已有: 名学员访问该课程

  快捷搜索:java语言javajava开发

前言:首先,不免俗套的把代码都贴上来,拿去执行吧,记住换上你的账号和密码,还有收件人邮箱。若是执行成功,不谢,后面不用看了,执行不成功再来看看后面的说的啥吧。

绝对良心的 Java 中发邮件功能,感动到想哭

开篇语,是不是感觉这个功能都老掉牙了,网上一大推的文章,随便找个代码就是了,为什么我还要选择专门写一篇呢,因为我遇到了不一样的坑……

首先,不免俗套的把代码都贴上来,拿去执行吧,记住换上你的账号和密码,还有收件人邮箱。若是执行成功,不谢,后面不用看了,执行不成功再来看看后面的说的啥吧。

肯定有大哥吐糟小弟的排版,小弟是真排不了了,排好了出去一预览还是这样,我又不能给你们上图片,有些大哥肯定也想复制代码自己试一下,先这样吧。

package mail;

import java.util.Date;

import java.util.Properties;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMessage.RecipientType;

import org.junit.Test;

public class MailTest {

public static final String SMTPSERVER = "smtp.163.com";

public static final String SMTPPORT = "465";

public static final String ACCOUT = "yu@163.com";

// 该密码不是登陆密码,而是授权密码

public static final String PWD = "123456";

@Test

public void testSendEmail throws Exception {

Properties props = getMailProperties;

// 根据邮件配置创建会话,注意session别导错包

Session session = Session.getDefaultInstance(props);

// 开启debug模式,可以看到更多详细的输入日志

session.setDebug(true);

//创建邮件

MimeMessage message = createEmail(session);

//获取传输通道

Transport transport = session.getTransport;

// 连接传输通道

transport.connect(SMTPSERVER,ACCOUT, PWD);

//发送邮件

transport.sendMessage(message, message.getAllRecipients);

transport.close;

}

/**

* 设置邮件相关配置

*/

private Properties getMailProperties {

// 创建邮件配置

Properties props = new Properties;

// 使用的协议(JavaMail规范要求)

props.setProperty("mail.transport.protocol", "smtp");

// 发件人的邮箱的 SMTP 服务器地址

props.setProperty("mail.smtp.host", SMTPSERVER);

// SMTP 服务器端口号,默认的端口号为 25 ,因为使用 SSL 连接方式,所以端口号为 465

// 为什么使用 SSL,传输加密,更安全

props.setProperty("mail.smtp.port", SMTPPORT);

props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

props.setProperty("mail.smtp.ssl.enable", "true");

// 设置需要请求认证

props.setProperty("mail.smtp.auth", "true");

return props;

}

/**

* 创建邮件

*/

public MimeMessage createEmail(Session session) throws Exception {

// 根据会话创建邮件

MimeMessage msg = new MimeMessage(session);

// address 邮件地址, personal 邮件昵称, charset 编码方式

InternetAddress fromAddress = new InternetAddress(ACCOUT,"Dear", "utf-8");

// 设置发送邮件方

msg.setFrom(fromAddress);

InternetAddress receiveAddress = new InternetAddress("yu@qq.com", "test", "utf-8");

// 设置邮件接收方

msg.setRecipient(RecipientType.TO, receiveAddress);

// 设置邮件标题

msg.setSubject("测试标题", "utf-8");

msg.setText("啥都不说,点赞吧!");

// 设置显示的发件时间

msg.setSentDate(new Date);

// 保存设置

msg.saveChanges;

return msg;

}

}

我就是像大多数人一样,认为这个功能太简单,网上 copy 一个代码,搞定,可惜…… bug 让我痛不欲生。当我怀着激动的心情运行代码的时候,出现了这个

这么好用的 Java 中发邮件功能分享了_www.epx365.cn

神马???为什么连接超时???我能正常访问网络啊,我连不上 163 的服务器??是不是网易对我有什么误解啊,好吧,翻过百度前几页,我找到了这样的答案,要在 163 邮箱中设置开启 smtp 的服务,有设置一个授权密码。操作的页面在这

这么好用的 Java 中发邮件功能分享了_www.epx365.cn

这是基本操作好吧,我当然是已经设置好了也再一次验证了我的授权密码,然鹅,还是

这么好用的 Java 中发邮件功能分享了_www.epx365.cn

怎么办,我心态有点崩啊,人人都说几分钟搞定的事我已经加班几个小时了,这是为什么!还是依旧的连接超时,为什么连不上呢?端口不对?网址不对?一而再再而三的确认了我使用的是 SSL 连接方式所以不能用默认的 SMTP 默认端口 25 ,端口没毛病啊!对了,我 ping 一下163服务器,看看行不行呗!一看,没毛病啊。凌乱了,真想就这样一直攻击 163 啊,让你连接超时。

还会有什么 bug 呢?再一次打开了百度,整理了这些建议……

1 邮件服务器的 smtp 服务没有打开。

我已经打开了呀!

2 登陆账号和密码为账号和客户端授权密码

我密码都换了几个了,就怕记错!

3 设置认证并开启 SSL 加密

必须开启了

4 可能 JDK 的版本过高,安全验证不通过

仿佛看到了希望,遂 JDK 由 1.8 变成 1.7 ,bug 依旧……

5 163,QQ 邮箱服务器本身频率和次数有限制

我这一次都没成功好吧……

6 有时候执行成功了,却不见邮件,请去垃圾箱中找一找……

果不其然,搞了一晚上,还是没有解决这个难题……

我会轻易放弃嘛,不可能的!第二天继续搞,这时候忍不住了,不能再强行装逼了,问了问同事,同事说了一句,用自己的 wifi 测试!

妈的,顿时醒悟啊,公司的网络有限制啊!大环境需要FQ,小环境还需要自己开数据啊!果然,代码未动,一次通过,心中那个万千草泥马啊……

你以为到这里就结束了嘛,并没有!我回到家,心想这次可以美滋滋的测试我的功能了,结果,出现了这个

这么好用的 Java 中发邮件功能分享了_www.epx365.cn

嗯,有进步啊,终于有报错信息了,跟着链接去 see 了一 see ,554 错误对应着什么,操作频繁之类的提醒,这次学乖了,我先去 ipconfig 看了一下自己的 IP ,在局域网内嘛,192.168.100.108 嗯,这个 IP 可能是用的人太多了,于是我又用手机数据测试一波,一次通过!爽

这么好用的 Java 中发邮件功能分享了_www.epx365.cn

然而,事情没有那么简单,我连上手机的数据之后发现网络不过是网段不一样而已,变成了 192.168.43.249 。我自认为没什么差别啊,搞不清楚…… 后面我又连上无线,看了一眼 IP 地址还是 192.168.100.108,一执行,报错了,返回值是 -1 ,没有想太多,又执行了一次,发现又可以正常发送了……

所以,你和谁说理去呢,就这个功能而言,这是真的不稳定啊,我还看到好多同学说我代码一点都没动啊,为什么前几天还能执行,现在执行不了啊之类的。这真的挺让你难过的…… 要我说,基本面不出问题,那就是网络的原因了,请把目光放到网络上,而不只是代码上,OK ?

文章出自:http://qh.itpxw.cn/peixun/software/201845360.html

文章标题:这么好用的 Java 中发邮件功能分享了



免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉

(责任编辑:IT培训网)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
培训学校
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员 用户级别:10 机构名称:IT培训网 联 系 人:罗老师 联系电话:13783581536 联系手机:13783581536 在线客服:起航学习网客服 在 线 QQ:起航学习网客服 电子邮件: 网站域名:http://www.itpxw.cn 注册时间:2016-07-18 11:07 最后登录:2024-02-20 13:02
推荐内容