java实现邮箱验证QQ邮箱验证和Foxmail验证
这两天公司要求做个Android端邮箱认证,android端还是很简单的,主要难点在后台链接邮箱并发送邮件。
思路:android端传送邮箱地址给后台,后台获取邮箱地址后,链接公司邮箱,并发送验证码邮件,并返回邮箱地址+验证码给Android端,Android进行验证邮箱地址和验证码是否匹配。
直接上后台代码,已经写成工具类,注释很清楚了。
工程需要导入mail.jar 架包下载地址
import java.util.Properties;
import java.util.Random;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory;public class MailboxVerification {public static void main(String args[]) {qqSendMail("发件邮箱", "邮箱密码", "smtp.qq.com","收件邮箱");foxmailSendMail("发件邮箱", "密码","邮件服务器", "收件人邮箱");}/*** Foxmail邮箱验证* * @param fromMail* 发件人邮箱* @param fromPwd* 发件人密码* @param mailServicer* 邮件服务器* @param toMail* 收件人邮箱* @return 收件人邮箱+验证码*/public static String foxmailSendMail(String fromMail, String fromPwd,String mailServicer, String toMail) {String code = createCode();StringBuffer st = new StringBuffer();// 获取系统属性Properties properties = new Properties();// 身份验证开启properties.put("mail.smtp.auth", "true");// debug模式properties.put("mail.debug", "true");// 邮件服务器properties.setProperty("mail.host", mailServicer);// 邮箱传送协议properties.setProperty("mail.transport.protocol", "smtp");// 获取默认session对象Session session = Session.getInstance(properties);session.setDebug(true);try {// 创建默认的 MimeMessage 对象MimeMessage message = new MimeMessage(session);// 头部头字段message.setFrom(new InternetAddress(fromMail));// 头部头字段message.addRecipient(Message.RecipientType.TO, new InternetAddress(toMail));// 头部头字段message.setSubject("请及时验证邮箱");// 设置消息体message.setText("邮箱验证码:" + code);Transport transport = session.getTransport();transport.connect(mailServicer, fromMail, fromPwd);transport.sendMessage(message, new Address[] { new InternetAddress(toMail) });transport.close();st.append(toMail + ":" + code);} catch (Exception e) {e.printStackTrace();return null;}return st.toString();}/*** QQ邮箱验证* * @param fromMail* 发件人邮箱* @param fromPwd* 发件人密码* @param mailServicer* 邮件服务器* @param toMail* 收件人邮箱* @return 收件人邮箱+验证码*/public static String qqSendMail(String fromMail, String fromPwd,String mailServicer, String toMail) {String code = createCode();StringBuffer st = new StringBuffer();Properties props = new Properties();// 开启debug调试props.setProperty("mail.debug", "true");// 发送服务器需要身份验证props.setProperty("mail.smtp.auth", "true");// 设置邮件服务器主机名props.setProperty("mail.host", mailServicer);// 发送邮件协议名称props.setProperty("mail.transport.protocol", "smtp");try {// 添加ssl加密,qq需要传输过程ssl加密MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);props.put("mail.smtp.ssl.enable", "true");props.put("mail.smtp.ssl.socketFactory", sf);Session session = Session.getInstance(props);// 邮件内容部分Message msg = new MimeMessage(session);msg.addRecipient(Message.RecipientType.TO, new InternetAddress(toMail));// 头部头字段msg.setSubject("请及时验证邮箱");// 设置消息体msg.setText("邮箱验证码:" + code);// 邮件发送者msg.setFrom(new InternetAddress(fromMail));// 发送邮件Transport transport = session.getTransport();transport.connect(mailServicer, fromMail, fromPwd);transport.sendMessage(msg, new Address[] { new InternetAddress(toMail) });transport.close();st.append(toMail + ":" + code);} catch (Exception e) {e.printStackTrace();return null;}return st.toString();}/*** 产生四位随机数* * @return*/public static String createCode() {Random random = new Random();String fourRandom = random.nextInt(10000) + "";int randLength = fourRandom.length();if (randLength < 4) {for (int i = 1; i <= 4 - randLength; i++)fourRandom = "0" + fourRandom;}return fourRandom;}
}
总结:
1、老报身份验证异常,然后开启debug,也没有看到有用的信息,猜想是身份验证时候的姿势出错了。
2、 解决方案qq开启pop3和smtp验证,会产生一段第三方登录的授权码,这个就是发件邮箱的登录密码。
3、foxmail、QQ验证时,不要把发件人邮箱的地址和密码放到props对象里,而是通过transport链接的时候,携带用户名和密码。
注意以上问题,就可以解决身份验证失败BUG。
java实现邮箱验证QQ邮箱验证和Foxmail验证相关推荐
- 如何快速准确的验证QQ邮箱是否开通,是否存在?
QQ是国内比较大的公共邮箱之一,做国内邮件营销的企业,无法避免需要做QQ邮件营销.既然是比较大的公共邮箱,那么群发邮件到达收件箱的难度也是比较有挑战性的. QQ邮箱比较难发有以下原因: 1. 发信IP ...
- HP批量验证QQ邮箱是否开通 检测是否有效软件
做国内邮件营销的企业,几乎无法避免QQ的邮件营销,因为它是国内比较大的公共邮箱之一,也是做邮件营销比较难发的唯一一家.它之所以难发就是因为限制比较多.主要有以下几点. 1.发信邮箱:同一个邮箱发信频率 ...
- java qq邮箱服务器端口_[Java教程]javamail 利用qq邮箱做邮箱服务器,简单小demo
[Java教程]javamail 利用qq邮箱做邮箱服务器,简单小demo 0 2016-07-12 10:00:10 首先maven:javax.mailmail1.4.1 用户名密码验证:1 pu ...
- java mail 554_javaMail 163 邮箱发 qq 邮箱 总是报 554 DT:SPM 163 smtp11
163 邮箱发 qq 邮箱 总是报 554 DT:SPM 163 smtp11 554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件.请检查是否有用户发送病毒或者垃圾邮件: ...
- 如何开启outlook邮箱的pop3和smtp_怎么在电子邮件客户端上登录腾讯邮箱(QQ邮箱 )?
常见的电子邮箱客户端:Foxmail.网易邮箱大师.Thunderbird.Outlook.Dreammail(DM Pro),这些客户端皆可添加腾讯邮箱(QQ邮箱 ). 本文以为畅邮(DM Pro) ...
- Outlook登录163邮箱,qq邮箱以及企业邮箱等邮箱
我用的是outlook2013版本 首先打开文件 选择添加账户 手动设置或其他服务器类型 选择POP或IMAP,点下一步 下面以163邮箱为例,qq邮箱和企业邮箱都类似(163邮箱和qq邮箱的pop怎 ...
- Apple邮箱配置QQ邮箱,163邮箱,edu邮箱,gmail邮箱,获取gmail日历
Apple邮箱配置QQ邮箱,163邮箱,edu邮箱,gmail邮箱,获取gmail日历 基本思路可以照着这个教程来: 03 如何充分使用iOS自带的"邮件"?--iPhone宝藏A ...
- 解决注册Github邮箱用qq邮箱无法收到验证码的问题
解决注册Github邮箱用qq邮箱无法收到验证码的问题 注册GitHub邮箱收不到验证码无法完成注册,需要把GitHub设置成邮箱白名单
- 网易163vip邮箱、163.net邮箱、新浪vip邮箱、QQ邮箱,哪款更符合商务邮件的需求
在现代商务沟通中,邮箱成为职场人士沟通交流的工具,那究竟哪种邮箱更符合商务往来的需求,TOM小编做了一个测评,将网易163vip邮箱,163.net邮箱,新浪vip邮箱,QQ邮箱等市面上常见的邮箱作对 ...
- QQ邮箱添加企业邮箱与企业邮箱添加QQ邮箱
额,企业邮箱中老是收不到公司人事发的消息,有时候很尴尬,原因是腾讯企业邮箱超过200人后,微信就不会提醒了,而且我又不是随时会看邮箱.所以,只能在QQ邮箱中添加企业邮箱,这样我的qq和微信就都能随时提 ...
最新文章
- 那年高考“坑爹“的金思力
- Maven学习总结(5)——聚合与继承
- 浅谈MyBatis二级缓存
- oracle 11g ocp 笔记(15)--使用rman进行备份
- 【转】开始iOS 7中自动布局教程(一)
- 用python计算ln函数_python-含参函数
- java多线程爬虫框架crawler4j的使用
- 碧蓝航线维护服务器时间,碧蓝航线3月21日维护时间更新公告 新增与更改内容介绍...
- Python 爬取 6000 篇文章分析 CSDN 是如何进入微信 500 强的
- Linux (转)解析 xinetd.conf
- 数据分析流程(学习)
- python cpk 计算
- 计算机装系统找不到硬盘分区,系统安装找不到现有分区,小编教你如何解决系统安装找不到现有分区...
- C++课程设计:学生管理系统
- NorFlash与NandFlash对比
- JDK1.8和JDK1.7的HashMap源码分析以及线程不安全问题
- java解有虚根的一元二次方程(超简单代码)
- OSChina 周四乱弹 ——程序员要赚多少钱才能让妻子保持温柔和美丽
- javaweb项目JS文件报错解决办法
- C#编写的Word操作类,有换页,添加表格,文本功能