package utils;

import java.security.GeneralSecurityException;
import java.util.Properties;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage; import com.sun.mail.util.MailSSLSocketFactory;
/**
* 发邮件工具类
* @author shundong
* @since 2018-9-29
*/
public class JavaEmail {
private static Scanner in;
//测试
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入收件邮箱:");
in = new Scanner(System.in);
String rs = in.nextLine();
while(!isEmail(rs)){
System.err.println("你输入的邮箱不正确!!请重新输入正确的邮箱地址:");
rs = in.nextLine();
}
sendMail(rs);
}
//判断Email合法性
public static boolean isEmail(String email) {
if (email == null)
return false;
String rule = "[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?";
Pattern pattern;
Matcher matcher;
pattern = Pattern.compile(rule);
matcher = pattern.matcher(email);
if (matcher.matches())
return true;
else
return false;
}
/**
* 发送邮件工具..
* @param email
* @param code
*/
public static void sendMail(String email){
//收信人的email
String to = email;
// //邮件发送的email
String from = "blog106@qq.com";
Properties prop = new Properties();
// 开启debug调试,以便在控制台查看
prop.setProperty("mail.debug", "true");
// 设置邮件服务器主机名
prop.setProperty("mail.host", "smtp.qq.com");
// 发送服务器需要身份验证
prop.setProperty("mail.smtp.auth", "true");
// 发送邮件协议名称
prop.setProperty("mail.transport.protocol", "smtp"); // 开启SSL加密,否则会失败
MailSSLSocketFactory sf = null;
try {
sf = new MailSSLSocketFactory();
} catch (GeneralSecurityException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf);
Session session = Session.getDefaultInstance(prop,new Authenticator() { public PasswordAuthentication getPasswordAuthentication()
{
//发件人邮件用户名、密码
return new PasswordAuthentication(from, "**********");//后面的字符是授权码,用qq密码反正我是失败了(用自己的,别用我的,这个号是我瞎编的,为了。。。。)
}
}); try {
//创建邮件对象
MimeMessage message = new MimeMessage(session);
//设置自定义发件人昵称
String mailName="";
try {
mailName=javax.mail.internet.MimeUtility.encodeText("克里斯博客验证");
} catch (Exception e) {
e.printStackTrace();
}
//设置发件者
message.setFrom(new InternetAddress(mailName+"<"+from+">"));
//设置收件者
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
//设置邮件主题
message.setSubject("欢迎你注册克里斯个人博客!");
//设置邮件的正文
message.setText("这里是正文");
//发送邮件
Transport.send(message);
System.err.println("邮箱发送成功....");
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("邮箱发送失败");
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("邮箱发送失败");
}
}
}

  

JavaMail发送邮箱的更多相关文章

  1. 使用JavaMail发送邮箱详解

    package com.gqz.forfuture.email; import java.util.Date; import java.util.Properties; import javax.ma ...

  2. 阿里云服务器 通过JavaMail发送邮箱STMP问题( 25端口被禁用 使用SSL协议465端口 )

    我们传统使用的比较简单的是 STMP 25端口收发邮件 今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件 开始在网上有说发现是JDK1.8的原因,然后自己也把JDK1.8换到了 ...

  3. 阿里云服务器 通过JavaMail发送邮箱STMP问题 25端口被禁用 使用SSL协议465端口

    1 问题描述 我们传统使用的比较简单的是 STMP 25端口收发邮件 今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件 开始在网上有说发现是JDK1.8的原因,然后自己也把JD ...

  4. javamail模拟邮箱功能发送电子邮件-基础实战篇(javamail API电子邮件实例)

    引言: JavaMail 是一种可选的.能用于读取.编写和发送电子消息的包 JavaMail jar包下载地址:http://java.sun.com/products/javamail/downlo ...

  5. javamail模拟邮箱功能发送电子邮件-中级实战篇【新增附件发送方法】(javamail API电子邮件实例)

    引言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...

  6. javamail模拟邮箱功能--邮件删除-中级实战篇【邮件标记方法】(javamail API电子邮件实例)

    前言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 本章可能是讲解javamail的最后一 ...

  7. [Java] JavaMail 发送带图片的 html 格式的邮件

    JavaMail 发送的邮件正文和附件是相互独立的,但是内置图片需要定位图片在正文中的位置,所以内置图片和邮件正文是互相依赖的. 发送带附件的邮件可参考JavaMail 发送 html 格式.带附件的 ...

  8. 邮件实现详解(四)------JavaMail 发送(带图片和附件)和接收邮件

    好了,进入这个系列教程最主要的步骤了,前面邮件的理论知识我们都了解了,那么这篇博客我们将用代码完成邮件的发送.这在实际项目中应用的非常广泛,比如注册需要发送邮件进行账号激活,再比如OA项目中利用邮件进 ...

  9. 使用JavaMail发送带附件的邮件

    所需jar包 链接:http://pan.baidu.com/s/1dFo4cDz 密码:akap 工具类: package com.javamail.utils; import java.util. ...

随机推荐

  1. Tuple Class

    Inheritance Hierarchy   System.Object  System.Tuple Methods   Name Description Create<T1>(T1) ...

  2. 基于opencv图片切割

    基于opencv图片切割为n个3*3区块 工作原因,切割图片,任务急,暂留调通的源码,留以后用. package com.rosetta.image.test; import org.opencv.c ...

  3. scrapy入门与进阶

    Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非 ...

  4. 【CTSC2018】暴力写挂(边分治,虚树)

    [CTSC2018]暴力写挂(边分治,虚树) 题面 UOJ BZOJ 洛谷 题解 发现第二棵树上的\(LCA\)的深度这玩意没法搞,那么枚举在第二棵树上的\(LCA\). 然后剩下的部分就是\(dep ...

  5. rt-thread 低优先级线程挂起高优先级线程失败

    @2019-01-13 [小记] 使用rt-thread线程管理功能时,低优先级线程挂起高优先级线程失败,高优先级线程或同等优先级线程挂起低优先级线程则成功.

  6. canvas路径剪切和判断是否在路径内

    1.剪切路径 clip() var ctx=mycanvas.getContext('2d'); ctx.beginPath(); // 建一个矩形路径 ctx.moveTo(20,10) ctx.l ...

  7. 【拓扑排序】烦人的幻灯片(slides)

    1395:烦人的幻灯片(slides) 时间限制: 1000 ms         内存限制: 65536 KB提交数: 753     通过数: 416 [题目描述] 李教授将于今天下午作一次非常重 ...

  8. Python3 与 C# 并发编程之~ 线程篇

      2.线程篇¶ 在线预览:https://github.lesschina.com/python/base/concurrency/3.并发编程-线程篇.html 示例代码:https://gith ...

  9. linux ./configure check your system clock

    checking for a BSD-compatible install... /usr/bin/install -cchecking whether build environment is sa ...

  10. Injection with CDI (Part I)

    官方参考:http://docs.jboss.org/weld/reference/latest/en-US/html/index.html https://antoniogoncalves.org/ ...