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. Neutron 网络基本概念

    Neutron 网络基本概念 上次我们讨论了 Neutron 提供的功能,今天我们学习 Neutron 模块几个重要的概念. Neutron 管理的网络资源包括 Network,subnet 和 po ...

  2. Spring 使用介绍(十)—— 单元测试

    一.概述 Spring测试框架提供了对单元测试的支持,以便使用spring的依赖注入和事务管理功能 maven依赖: <dependency> <groupId>junit&l ...

  3. mvc HTML转Excel身份证后三位变成0

    @{ var style = "vnd.ms-excel.numberformat:@"; } //HTML <td style=@style><span> ...

  4. linu系统文件授权命令

  5. BZOJ3790神奇项链——manacher+贪心

    题目描述 母亲节就要到了,小 H 准备送给她一个特殊的项链.这个项链可以看作一个用小写字 母组成的字符串,每个小写字母表示一种颜色.为了制作这个项链,小 H 购买了两个机器.第一个机器可以生成所有形式 ...

  6. 最简单的spring boot web项目

    搭建效果为: 直接在网页输入请求,在页面中显示一行文字:Hello,Spring Boot 与一般的wen项目不同的地方: 1.不需要配置web.xml 文件,但需要注解@SpringBootAppl ...

  7. HDOJ5540 Secrete Master Plan

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5540 题目大意:给一个两个2*2的矩阵,第二个矩阵能不能通过旋转得到第一个矩阵 题目思路:模拟 #in ...

  8. ZOJ 3846 GCD Reduce//水啊水啊水啊水

    GCD Reduce Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge You are given a sequ ...

  9. 【hdu6185】Covering(骨牌覆盖)

    2017ACM/ICPC广西邀请赛-重现赛1004Covering 题意 n*4的格子,用1*2和2*1的砖块覆盖.问方案数(mod 1e9+7).(n不超过1e9) 题解 递推了个式子然后错位相减. ...

  10. 搭建Google镜像网站

    很多人FQ或者买VPN账号仅仅只是为了使用Google搜索.相对于搭建VPN服务器来说,下面的方法搭建Google镜像网站将更加便捷. 条件:最好有自己的域名(可选),有可以正常访问Google的服务 ...