这两天公司要求做个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验证相关推荐

  1. 如何快速准确的验证QQ邮箱是否开通,是否存在?

    QQ是国内比较大的公共邮箱之一,做国内邮件营销的企业,无法避免需要做QQ邮件营销.既然是比较大的公共邮箱,那么群发邮件到达收件箱的难度也是比较有挑战性的. QQ邮箱比较难发有以下原因: 1. 发信IP ...

  2. HP批量验证QQ邮箱是否开通 检测是否有效软件

    做国内邮件营销的企业,几乎无法避免QQ的邮件营销,因为它是国内比较大的公共邮箱之一,也是做邮件营销比较难发的唯一一家.它之所以难发就是因为限制比较多.主要有以下几点. 1.发信邮箱:同一个邮箱发信频率 ...

  3. java qq邮箱服务器端口_[Java教程]javamail 利用qq邮箱做邮箱服务器,简单小demo

    [Java教程]javamail 利用qq邮箱做邮箱服务器,简单小demo 0 2016-07-12 10:00:10 首先maven:javax.mailmail1.4.1 用户名密码验证:1 pu ...

  4. java mail 554_javaMail 163 邮箱发 qq 邮箱 总是报 554 DT:SPM 163 smtp11

    163 邮箱发 qq 邮箱 总是报 554 DT:SPM 163 smtp11 554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件.请检查是否有用户发送病毒或者垃圾邮件: ...

  5. 如何开启outlook邮箱的pop3和smtp_怎么在电子邮件客户端上登录腾讯邮箱(QQ邮箱 )?

    常见的电子邮箱客户端:Foxmail.网易邮箱大师.Thunderbird.Outlook.Dreammail(DM Pro),这些客户端皆可添加腾讯邮箱(QQ邮箱 ). 本文以为畅邮(DM Pro) ...

  6. Outlook登录163邮箱,qq邮箱以及企业邮箱等邮箱

    我用的是outlook2013版本 首先打开文件 选择添加账户 手动设置或其他服务器类型 选择POP或IMAP,点下一步 下面以163邮箱为例,qq邮箱和企业邮箱都类似(163邮箱和qq邮箱的pop怎 ...

  7. Apple邮箱配置QQ邮箱,163邮箱,edu邮箱,gmail邮箱,获取gmail日历

    Apple邮箱配置QQ邮箱,163邮箱,edu邮箱,gmail邮箱,获取gmail日历 基本思路可以照着这个教程来: 03 如何充分使用iOS自带的"邮件"?--iPhone宝藏A ...

  8. 解决注册Github邮箱用qq邮箱无法收到验证码的问题

    解决注册Github邮箱用qq邮箱无法收到验证码的问题 注册GitHub邮箱收不到验证码无法完成注册,需要把GitHub设置成邮箱白名单

  9. 网易163vip邮箱、163.net邮箱、新浪vip邮箱、QQ邮箱,哪款更符合商务邮件的需求

    在现代商务沟通中,邮箱成为职场人士沟通交流的工具,那究竟哪种邮箱更符合商务往来的需求,TOM小编做了一个测评,将网易163vip邮箱,163.net邮箱,新浪vip邮箱,QQ邮箱等市面上常见的邮箱作对 ...

  10. QQ邮箱添加企业邮箱与企业邮箱添加QQ邮箱

    额,企业邮箱中老是收不到公司人事发的消息,有时候很尴尬,原因是腾讯企业邮箱超过200人后,微信就不会提醒了,而且我又不是随时会看邮箱.所以,只能在QQ邮箱中添加企业邮箱,这样我的qq和微信就都能随时提 ...

最新文章

  1. 那年高考“坑爹“的金思力
  2. Maven学习总结(5)——聚合与继承
  3. 浅谈MyBatis二级缓存
  4. oracle 11g ocp 笔记(15)--使用rman进行备份
  5. 【转】开始iOS 7中自动布局教程(一)
  6. 用python计算ln函数_python-含参函数
  7. java多线程爬虫框架crawler4j的使用
  8. 碧蓝航线维护服务器时间,碧蓝航线3月21日维护时间更新公告 新增与更改内容介绍...
  9. Python 爬取 6000 篇文章分析 CSDN 是如何进入微信 500 强的
  10. Linux (转)解析 xinetd.conf
  11. 数据分析流程(学习)
  12. python cpk 计算
  13. 计算机装系统找不到硬盘分区,系统安装找不到现有分区,小编教你如何解决系统安装找不到现有分区...
  14. C++课程设计:学生管理系统
  15. NorFlash与NandFlash对比
  16. JDK1.8和JDK1.7的HashMap源码分析以及线程不安全问题
  17. java解有虚根的一元二次方程(超简单代码)
  18. OSChina 周四乱弹 ——程序员要赚多少钱才能让妻子保持温柔和美丽
  19. javaweb项目JS文件报错解决办法
  20. C#编写的Word操作类,有换页,添加表格,文本功能

热门文章

  1. XP盗版”大虾PK百度谷歌 谋划3年上市
  2. mycat分库分表demo
  3. python对象的基本概念
  4. Db2应用状态为uow waiting,但快照显示却在不停地Fetch
  5. R语言离群值处理分析
  6. Linux下V4L2框架基于SDL库本地USB摄像头监控
  7. 强制删除kubernetes的ns
  8. 【功能业务篇】APP授权微信登录、绑定账号测试思考
  9. OpenKG 祝大家新春快乐!
  10. Android 12.0 Launcher3 去掉Hotseat功能