javamail 利用qq邮箱做邮箱服务器,简单小demo
首先maven:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.1</version>
</dependency>
用户名密码验证:
public class MailAuthenticator extends Authenticator{
//邮箱账号
private String username;
//邮箱密码
private String password;
public MailAuthenticator(String username,String password){
this.username=username;
this.password=password;
}
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
public class SimpleMailSender {
private final transient Properties props = System.getProperties();
private transient MailAuthenticator authenticator;
private transient Session session;
public SimpleMailSender(final String smtpHostName, final String username,
final String password){
try {
init(username, password, smtpHostName);
} catch (NoSuchProviderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public SimpleMailSender(final String username, final String password) throws NoSuchProviderException {
//通过邮箱地址解析出smtp服务器,对大多数邮箱都管用
final String smtpHostName = "smtp." + username.split("@")[1];
init(username, password, smtpHostName);
}
private void init(String username, String password, String smtpHostName) throws NoSuchProviderException {
// 初始化props
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
//qq是smtp.qq.com
props.put("mail.smtp.host", smtpHostName);
//ssl邮箱端口
props.put("mail.smtp.socketFactory.port", 465);//465
//开启ssl
props.put("mail.smtp.starttls.enable","true");
// 验证
authenticator = new MailAuthenticator(username, password);
// 创建session
session = Session.getInstance(props, authenticator);
session.setDebug(true);
// Transport transport = session.getTransport();
// try {
// transport.connect("smtp.qq.com", 25, "530486639@qq.com", "llg9004_d");
// } catch (MessagingException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
}
public void send(String recipient, String subject, Object content)
throws AddressException, MessagingException {
// 创建mime类型邮件
final MimeMessage message = new MimeMessage(session);
// 设置发信人
message.setFrom(new InternetAddress(authenticator.getUsername()));
// 设置收件人
message.setRecipient(RecipientType.TO, new InternetAddress(recipient));
// 设置主题
message.setSubject(subject);
// 设置邮件内容
System.out.println();
message.setContent(content.toString(), "text/html;charset=utf-8");
// 发送
Transport.send(message);
}
// public void send(String recipient, SimpleMail mail)
// throws AddressException, MessagingException {
// send(recipient, mail.getSubject(), mail.getContent());
// }
/**
* 1.重点现在客户端掉http端口25,腾讯好像不让掉了,必须https调用
* 2.腾讯使用这种方式连接的话,需要重新申请独立密码,不是qq邮箱的密码,还需开启pop/smtp功能
* 3.用腾讯的邮局发邮件好像有限制,发送过多,好像直接给你连接断开了
* 4.如果需要做发邮件的功能的话,最好自己搭建邮局
* @param args
* @throws AddressException
* @throws MessagingException
*/
public static void main(String[] args) throws AddressException, MessagingException {
SimpleMailSender sms= new SimpleMailSender("10000@qq.com",
"dfvasdasdasd");
//发送过多的话会断开连接
// for(int i=0;i<100;i++){
sms.send("11111@qq.com", "hello", "hello");
// System.out.println("#######:"+i);
// }
}
}
javamail 利用qq邮箱做邮箱服务器,简单小demo的更多相关文章
- webService(简单小demo)
1.什么是webService? 1.1.先说好处: WebService是两个系统的远程调用,使两个系统进行数据交互,如应用: 天气预报服务.银行ATM取款.使用邮箱账号登录各网站等. WebSer ...
- hammer.js方法总结(只做了一个简单的demo)
html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- koa2 mongdb 做后端接口的小demo
现在前端全栈里面有一种技术栈比较火 前端使用 vue 或者react 后端使用 koa2 mysql数据库 或者mongdb做数据储存 但是基本这样的全栈教程 都要收费 收费就收费吧 但是 有没有遇到 ...
- Spring Boot 简单小Demo 转载!!!
Spring Boot简介 接下来我们所有的Spring代码实例将会基于Spring Boot,因此我们先来了解一下Spring Boot这个大杀器. Spring早期使用XML配置的方式来配置Spr ...
- Euraka适合初学者的简单小demo
1. 创建父工程:父工程的的打包形式该为pom,删除其余无关的文件 修改父工程的pom文件内容如下: <?xml version="1.0" encoding="U ...
- 实战:一、使用mongo做一个注册的小demo
思路:1.使用mongoose 进行 数据库的链接 2.使用Schema来进行传输字段的定义 3.安装koa-router进行数据处理4.安装koa-bodyparser 进行post数据交互5.解决 ...
- PyQt4简单小demo
#coding=utf-8 import sys from PyQt4.QtCore import * from PyQt4.QtGui import * class FontPropertiesDl ...
- 利用css3和js实现旋转木马图片小demo
先看效果图: 上源码 html代码 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- leaflet简单操作demo
今天大意了解了一下leaflet这个开源的 JavaScript 库,很强大. 结合腾讯地图,做了个简单的demo,作为一个学习的起点吧(各种API结合自身的业务) <!DOCTYPE html ...
随机推荐
- Java程序员的日常 —— 多进程开发
最近再弄进程管理相关的工作,因此必要的就涉及到各种系统下关于进程的管理. 这里简单的介绍下: 如何在Java中执行命令 在windows下肯定是dos命令了,而在linux则为shell命令.执行的方 ...
- C#获取文本文件的编码,自动区分GB2312和UTF8
C# 获取文本文件的编码,自动区分GB2312和UTF8 以下是获取文件编码的一个类 using System; using System.IO; using System.Text; /// < ...
- iOS中的预编译指令的初步探究
目录 文件包含 #include #include_next #import 宏定义 #define #undef 条件编译 #if #else #endif #if define #ifdef #i ...
- 转 - ubuntu apache2下目录结构
ubuntu apache2下目录结构 原文:http://blog.csdn.net/jibcy/article/details/8060651 在Windows下,Apache的配置文件通常只有一 ...
- Python数据类型之“集合(Sets)与映射(Mapping)”
一.集合类型(Sets) 集合对象是不同的(不可重复)hashable对象的无序集合.常见用法包括:成员关系测试.移除序列中的重复.以及科学计算,例如交集.并集.差分和对称差分.通俗点来说,集合是一个 ...
- android api sdk
Platform Version API Level VERSION_CODE Notes Android 6.0 23 M API Changes Android 5.1 22 LOLLIPOP_M ...
- 【解决方案】安装vssdk_full.exe遇到的问题
Stop Block: CompatibilityMode : Windows Program Compatibility mode is on. Turn it off and then try S ...
- java JFileChooser选择文件和保存文件
//文件过滤器import java.io.File; import javax.swing.filechooser.FileFilter; public class MyFilter extends ...
- s2sh框架搭建(辅助工具:MyEclipse)及解决一些遇到的问题
1.新建一个web project 2.首先生成Hibernate Facet 3.Hibernate Facet 安装步骤 4.然后是spring facet安装步骤 5.最后是struts fac ...
- poj2060Taxi Cab Scheme(二分图匹配)
/* 题意: 出租车 有一个出发的时间,从点(a, b)到点(c, d),时间为 abs(a-c)+abs(b-d)! 一辆车可以在运完一个乘客后运另一个乘客, 条件是此车要在预约开始前一分钟之前到达 ...