javax.mail发送邮箱
一、利用javax.mail发送邮箱需要两个邮箱账号 一个测试发送账号,一个接受账号。
1、发件人邮箱 注意:新激活邮箱的QQ用户要14天之后才能使用SMTP;
2、某些邮箱服务器为了增加邮箱本身密码的安全性,给 SMTP 客户端设置了独立密码(有的邮箱称为“授权码”),对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。
3、发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com,网易163个人邮箱的 SMTP 服务器地址为: smtp.163.com qq个人邮箱的为: smtp.qq.com,注意:企业邮箱个人邮箱的服务器地址不同,每天发件上限也不同。
4、 某些邮箱服务器要求 SMTP 连接需要使用 SSL 安全认证 (为了提高安全性, 邮箱支持SSL连接, 也可以自己开启), 如果无法连接邮件服务器, 仔细查看控制台打印的 log, 如果有有类似 “连接失败, 要求 SSL 安全连接” 等错误。
5、端口:SMTP 服务器的端口 (非 SSL 连接的端口一般默认为 25, 可以不添加, 如果开启了 SSL 连接, 需要改为对应邮箱的 SMTP 服务器的端口, 具体可查看对应邮箱服务的帮助, QQ邮箱的SMTP(SLL)端口为465或587, 其他邮箱自行去查看)
二、注意:
1.各大邮箱的发件数量每天有上限, 163个人邮箱每天限发50封,详情请的请参考网站:
http://www.360doc.com/content/15/0411/20/20545288_462481521.shtml
2.邮箱内不要包含敏感词汇
3.新激活邮箱的QQ用户要14天之后才能使用SMTP
4.如果运行完毕后没有报错,邮箱未接受到邮箱,可能被判断为垃圾邮件->请到邮箱自助查询->被拦截 (系统拦截)的邮件加入白名单
三、代码伺候
1、EmailService() 创建邮件服务
2、createMimeMessage() 创建一封只包含文本的简单邮件
3、main() 主函数
package com.test;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;public class EmailUtil {// 发件人的 邮箱 注意:新激活邮箱的QQ用户要14天之后才能使用SMTPpublic static String myEmailAccount = "xxxxxxxxxxx@163.com";// PS: 某些邮箱服务器为了增加邮箱本身密码的安全性,给 SMTP 客户端设置了独立密码(有的邮箱称为“授权码”),// 对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。public static String myEmailPassword = "xxxxxxxxxxxxx";// 是授权码,不是邮箱密码,自行百度如何获取授权码// 发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com// 网易163邮箱的 SMTP 服务器地址为: smtp.163.com qq的为: smtp.qq.compublic static String myEmailSMTPHost = "smtp.163.com";// 收件人邮箱(替换为自己知道的有效邮箱)public static String receiveMailAccount = "xxxxxxxx@qq.com";// PS: 某些邮箱服务器要求 SMTP 连接需要使用 SSL 安全认证 (为了提高安全性, 邮箱支持SSL连接, 也可以自己开启),// 如果无法连接邮件服务器, 仔细查看控制台打印的 log, 如果有有类似 “连接失败, 要求 SSL 安全连接” 等错误,/** // SMTP 服务器的端口 (非 SSL 连接的端口一般默认为 25, 可以不添加, 如果开启了 SSL 连接, // 需要改为对应邮箱的* SMTP 服务器的端口, 具体可查看对应邮箱服务的帮助, // QQ邮箱的SMTP(SLL)端口为465或587, 其他邮箱自行去查看)*/public static String smtpPort = "465";/*** 1.各大邮箱的发件数量每天有上限, 163邮箱每天限发50封,详情请的请参考网站:* http://www.360doc.com/content/15/0411/20/20545288_462481521.shtml* 2.邮箱内不要包含敏感词汇* 3.新激活邮箱的QQ用户要14天之后才能使用SMTP* 4.如果运行完毕后没有报错,邮箱未接受到邮箱,可能被判断为垃圾邮件->请到邮箱自助查询->被拦截 (系统拦截)的邮件加入白名单*/public static void main(String[] args) {try {EmailService(myEmailAccount, // 发件人邮箱myEmailPassword, // 发件人授权码myEmailSMTPHost, // smtp服务器"465", // smtp端口"发件人测试昵称", receiveMailAccount, // 收件人邮箱"java测试邮件主题", "测试java邮件邮件内容");} catch (Exception e) {e.printStackTrace();}}/*** 创建邮件服务* @param fajianren 发件人* @param shouquanma 发授权码* @param smtpService smtp服务器* @param shoujianren 收件人* @param smtpPort smtp端口* @param sendName 发件人名字* @param subject 邮件主题* @param contents 邮件内容* @return void* @throws Exception*/public static void EmailService(String fajianren, String shouquanma,String smtpService, String smtpPort, String sendName,String receiveName, String subject, String contents)throws Exception {// 1. 创建参数配置, 用于连接邮件服务器的参数配置Properties props = new Properties(); // 参数配置props.setProperty("mail.transport.protocol", "smtp"); // 使用的协议(JavaMail规范要求)props.setProperty("mail.smtp.host", smtpService); // 发件人的邮箱的 SMTP 服务器地址props.setProperty("mail.smtp.auth", "true"); // 需要请求认证props.setProperty("mail.smtp.port", smtpPort);props.setProperty("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");props.setProperty("mail.smtp.socketFactory.fallback", "false");props.setProperty("mail.smtp.socketFactory.port", smtpPort);// 新添加的props.setProperty("mail.smtp.ssl.enable", "true");// 2. 根据配置创建会话对象, 用于和邮件服务器交互Session session = Session.getDefaultInstance(props);// Session session =Session.getInstance(props, null);session.setDebug(true); // 设置为debug模式, 可以查看详细的发送 log// 3. 创建一封邮件MimeMessage message = createMimeMessage(session, fajianren, sendName,receiveName, subject, contents);// 4. 根据 Session 获取邮件传输对象Transport transport = session.getTransport();// 5. 使用 邮箱账号 和 密码 连接邮件服务器, 这里认证的邮箱必须与 message 中的发件人邮箱一致, 否则报错//// PS_01: 成败的判断关键在此一句, 如果连接服务器失败, 都会在控制台输出相应失败原因的 log,// 仔细查看失败原因, 有些邮箱服务器会返回错误码或查看错误类型的链接, 根据给出的错误// 类型到对应邮件服务器的帮助网站上查看具体失败原因。//// PS_02: 连接失败的原因通常为以下几点, 仔细检查代码:// (1) 邮箱没有开启 SMTP 服务;// (2) 邮箱密码错误, 例如某些邮箱开启了独立密码;// (3) 邮箱服务器要求必须要使用 SSL 安全连接;// (4) 请求过于频繁或其他原因, 被邮件服务器拒绝服务;// (5) 如果以上几点都确定无误, 到邮件服务器网站查找帮助。//// PS_03: 仔细看log, 认真看log, 看懂log, 错误原因都在log已说明。transport.connect(fajianren, shouquanma);// 6. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人,// 抄送人, 密送人transport.sendMessage(message, message.getAllRecipients());// 7. 关闭连接transport.close();}/*** 创建一封只包含文本的简单邮件* * @param session 和服务器交互的会话* @param sendMail 发件人邮箱* @param receiveMail 收件人邮箱 * @param sendName 发件人名字* @param receiveName 收件人名字* @param subject 邮件主题* @param contents 邮件内容* @return void* @throws Exception*/public static MimeMessage createMimeMessage(Session session,String sendMail, String sendName, String receiveMail,String subject, String contents) throws Exception {// 1. 创建一封邮件MimeMessage message = new MimeMessage(session);// 2. From: 发件人message.setFrom(new InternetAddress(sendMail, sendName, "UTF-8"));// 3. To: 收件人(可以增加多个收件人、抄送、密送)message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, receiveMail));// 4. Subject: 邮件主题message.setSubject(subject, "UTF-8");// 5. Content: 邮件正文(可以使用html标签)message.setContent(contents, "text/html;charset=UTF-8");// 6. 设置发件时间message.setSentDate(new Date());// 7. 保存设置message.saveChanges();return message;}}
javax.mail发送邮箱相关推荐
- oracle ssl发送邮件,使用javax.mail发送带有ssl的电子邮件
我想使用gmail作为smtp服务器发送电子邮件. 这是我的代码,我没有让它工作-- 运行testSettings()后,我得到调试输出,然后它就停止了.没有超时,没有错误,没有-- public v ...
- javax.mail 发送
依赖 <dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId& ...
- Java简单的本地邮箱服务器发送(javax.mail)
推荐使用标题5 1.安装使用易游服务器以及Foxmail 易游服务器傻瓜式安装 Foxmail 向导部分请断网 2.简单的入门案例 1.创建mevan项目 2.引入坐标 <!-- Javamai ...
- Java使用javax.mail.jar发送邮件并同意发送附件
因为Java在开发网页上占有绝大优势.所以作为web端的领军人物,譬如发送短信和发送邮件这些就成了必定,网络安全一再安全我们须要把账号的安全级别提到更高.因此这些对于开发者也就成了必须掌握的技能!我一 ...
- java使用javax.mail包发送电子邮件:设置账号、密码、主题、文本、附件
分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 docker/kubernetes入门视频教程 全栈工程师开发手册 (作者:栾鹏) java ...
- java mail张_javaMail操作QQ邮箱发送邮箱 Demo
最近用到想给项目中加一个功能,就是当项目中某些模块发生异常,在捕获异常后不仅仅写日志抛异常等!还要追加一个发送邮件给该模块的负责人,方便运维定位问题: maven管理的配置: javax.mail m ...
- javamail连接gmail邮箱时报错:javax.mail.AuthenticationFailedException
最近邮箱功能好不容易上线了,但是发现有很多问题还考虑的不够周到,例如一些企业申请的各个邮箱服务器的企业邮箱账号,有些网上的邮箱正则表达式,无法匹配一些企业邮箱账号:作为一个SAAS平台,我们主要是在功 ...
- Java使用javax.mail.jar发送邮件并允许发送附件
由于Java在开发网页上占有绝大优势,所以作为web端的领军人物,譬如发送短信和发送邮件这些就成了必然,网络安全一再安全我们需要把账号的安全级别提到更高!因此这些对于开发人员也就成了必须掌握的技能!我 ...
- java程序通过腾讯邮箱发送邮件失败:javax.mail.AuthenticationFailedException: 535 Error: authentication failed, syste
1.问题描述 通过java程序实现邮箱发送验证码的功能 使用一段时间后出现发送邮件失败的问题 排查后提示:javax.mail.AuthenticationFailedException: 535 E ...
最新文章
- 2 行代码,将 .NET 执行时间降低 87%!
- Verilog初级教程(23)Verilog仿真中的显示任务
- 利用smarty生成静态页的关键代码
- SoaBox 1.1.6 GA 发布,SOA 模拟环境
- Delphi中调用API函数经验点滴(二)
- 一体化系统中心服务器,数据中心一体化:监测与控制
- 154. 寻找旋转排序数组中的最小值 II(有手就行)
- 触摸工业光掩模行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 安卓模拟器genymotion连接eclipse成功但是不显示其中项目
- 创业者该如何给员工画饼、圆饼?
- 银行数据仓库体系实践(14)--数据应用之内部报表及数据分析
- 前路钉板系统在重建胸腰段稳定性中应用 [已发表]
- Windows 安装PHP SG11插件
- TypeError: Object of type xxx is not JSON serializable错误解决
- 操作系统笔记(本科必修课)
- 记录解决nonebot2中定时器报时区问题的错误
- CPU型号后缀字母所代表的含义
- 晋江文学城网站优化与诊断
- float double表示的有效位数
- 技能高考模拟试题三计算机类,计算机技能高考2016模拟试卷3