java实现邮箱发送邮件功能
邮箱验证是一个很常见的功能了,基本上每个网站都会用的到,java也有专门的jar来处理邮件发送等服务,这里只是简单的实现一下发送邮件的功能,具体jar包就不再提供了,我会把所有需要引用的包都贴出来,方便大家copy。直奔主题:
第一步:封装发件人账号密码
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication; /**
* 发件人账号密码
* @author zhangdi
*
*/
public class MailAuthenticator extends Authenticator{ public static String USERNAME = "";
public static String PASSWORD = ""; public MailAuthenticator() {
} protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USERNAME, PASSWORD);
} }
第二步:提供发送操作类
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;/**
* 邮件发送操作类
*
* @author zhangdi
*
*/
public class MailOperation { /**
* 发送邮件
* @param user 发件人邮箱
* @param password 授权码(注意不是邮箱登录密码)
* @param host
* @param from 发件人
* @param to 接收者邮箱
* @param subject 邮件主题
* @param content 邮件内容
* @return success 发送成功 failure 发送失败
* @throws Exception
*/
public String sendMail(String user, String password, String host,
String from, String to, String subject, String content)
throws Exception {
if (to != null){
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
MailAuthenticator auth = new MailAuthenticator();
MailAuthenticator.USERNAME = user;
MailAuthenticator.PASSWORD = password;
Session session = Session.getInstance(props, auth);
session.setDebug(true);
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
if (!to.trim().equals(""))
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to.trim()));
message.setSubject(subject);
MimeBodyPart mbp1 = new MimeBodyPart(); // 正文
mbp1.setContent(content, "text/html;charset=utf-8");
Multipart mp = new MimeMultipart(); // 整个邮件:正文+附件
mp.addBodyPart(mbp1);
// mp.addBodyPart(mbp2);
message.setContent(mp);
message.setSentDate(new Date());
message.saveChanges();
Transport trans = session.getTransport("smtp");
trans.send(message);
System.out.println(message.toString());
} catch (Exception e){
e.printStackTrace();
return "failure";
}
return "success";
}else{
return "failure";
}
} }
第三步:测试
public static void main(String[] args) {
MailOperation operation = new MailOperation();
String user = "你的邮箱地址";
String password = "你的邮箱授权码";
String host = "smtp.163.com";
String from = "你的邮箱地址";
String to = "目标邮箱地址";// 收件人
String subject = "输入邮件主题";
//邮箱内容
StringBuffer sb = new StringBuffer();
String yzm = RandomUtil.getRandomString(6);
sb.append("<!DOCTYPE>"+"<div bgcolor='#f1fcfa' style='border:1px solid #d9f4ee; font-size:14px; line-height:22px; color:#005aa0;padding-left:1px;padding-top:5px; padding-bottom:5px;'><span style='font-weight:bold;'>温馨提示:</span>"
+ "<div style='width:950px;font-family:arial;'>欢迎使用NET微活动,您的注册码为:<br/><h2 style='color:green'>"+yzm+"</h2><br/>本邮件由系统自动发出,请勿回复。<br/>感谢您的使用。<br/>杭州恩意替电子商务有限公司</div>"
+"</div>");
try {
String res = operation.sendMail(user, password, host, from, to,
subject, sb.toString());
System.out.println(res);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
注意:邮件发送很简单,不过有几个地方需要注意一下:
1、发件人的密码不是你登录邮箱的密码,而是设置POP3/SMTP/IMAP是获取的授权码,如下图(截取自163邮箱);

2、如果使用QQ邮箱作为发件邮箱的话,需要专门配置SSL证书等等信息,这是因为QQ邮箱的要求(当然省事的做法就使用企业邮箱或者其他邮箱提供商比如163);
3、如果使用了其他邮箱服务商提供的邮箱来作为发件人,那么在编辑邮件内容的时候需要注意一些敏感词的问题,如果你的邮件中含有敏感内容的话邮箱服务商将不会为你发送该邮件;
4、如果是在main方法中调用的话是可以的,但是如果要部署到web容器(比如tomcat)中的话,则需要引入两个jar包
与
java实现邮箱发送邮件功能的更多相关文章
- DEDECMS会员注册如何配置邮箱发送邮件功能
网站邮件功能是一个非常基础和有效的通信工具,配合dede会员注册邮件验证功能可以大量的拒绝垃圾注册用户.那么如何配置DEDECMS会员注册邮箱发送邮件功能? 1:配置dedecms网站发信EMAI ...
- java实现邮箱发送邮件
第一步:封装发件人账号密码 import javax.mail.Authenticator;import javax.mail.PasswordAuthentication; /** * 发件人账号密 ...
- 使用java向邮箱发送邮件
这是我很早之前写的一个工具类,最近在整理自己所学的东西,无意中找到了,就拿出来与大家分享,代码如下: import java.io.ByteArrayOutputStream; import java ...
- java实现发送邮件功能
项目中实现发送邮件功能,先书写一个小Demo,记录如下: POM.XML中导入依赖 <!-- start java 提供的支持邮件发送相关业务的类 --> <dependency&g ...
- Java实现发邮件功能---网易邮箱
目录 Java实现发邮件功能 前言 开发环境 代码 效果 结束语 Java实现发邮件功能 前言 电子邮件的应用场景非常广泛,例如新用户加入,即时发送优惠清单.通过邮件找回密码.监听后台程序,出现异常自 ...
- JavaMail实现邮箱之间发送邮件功能
package com.minstone.message.util; import java.util.Date; import java.util.Properties; import javax. ...
- Java实现网易企业邮箱发送邮件
最近项目需要用网易企业邮箱发送邮件,特意来将实现过程记录一下: maven导入jar包 <!-- javax.mai 核心包 --> <dependency> <grou ...
- 基于java mail实现简单的QQ邮箱发送邮件
刚学习到java邮件相关的知识,先写下这篇博客,方便以后翻阅学习. -----------------------------第一步 开启SMTP服务 在 QQ 邮箱里的 设置->账户里开启 S ...
- 一百零五:CMS系统之flask-mail使用和邮箱配置、发送邮件功能
安装:pip install flask-mail 官方文档:https://pythonhosted.org/Flask-Mail/ 邮箱配置 MAIL_SERVER = 'smtp.qq.com' ...
随机推荐
- (持续更新)vs2012,2013,2015,2017,2019 常用的插件 与 开发中常用的工具
这篇博客 持续更新. 小伙伴们可以复制名称,在vs的扩展和更新中去搜索下载 .其他的工具在官网下载
- 【洛谷】P3188 [HNOI2007]梦幻岛宝珠
题目描述 给你N颗宝石,每颗宝石都有重量和价值.要你从这些宝石中选取一些宝石,保证总重量不超过W,且总价值最大为,并输出最大的总价值. 数据范围:N<=100;W<=2^30,并且保证每 ...
- locust使用命令
locust -f locust_demo.py --logfile=locusfile.log
- Java 面向对象(十六)
多线程 一.并发与并行 并发:指两个或多个事件在同一个时间段内发生. 并行:指两个或多个事件在同一时刻发生(同时发生). 在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行, ...
- Ubuntu --- 安装deb包
在Ubuntu下安装deb包需要使用dpkg命令.Dpkg 的普通用法: 1.sudo dpkg -i <package.deb> 安装一个 Debian 软件包,如你手动下载的文件. 2 ...
- ubuntu12.04下安装Python3.5.2 1
下载源码包 (https://www.python.org/downloads/release/python-352/) 2 解压Python-3.5.2.tar.xz 3 sudo ./conf ...
- 手动安装sublimeText3插件
就在今天下午,我花了一个小时的时间安装sublime3插件stylus,就是为了让stylus文件能够高亮显示.网上找了很多方法,可以通过package control安装,然而,我的sublime ...
- shell编程系列12--文本处理三剑客之sed利用sed修改文件内容
shell编程系列12--文本处理三剑客之sed利用sed修改文件内容 修改命令对照表 编辑命令 1s/old/new/ 替换第1行内容old为new ,10s/old/new/ 替换第1行到10行的 ...
- ISO/IEC 9899:2011 条款6.5.6——加法操作符
6.5.6 加法操作符 语法 1.additive-expression: multiplication-expression additive-expression + multipli ...
- WPF richTextBox 滚动到某项
在网上没有找到合适的代码,自己写了一段,还有待优化... 直接上代码 /// <summary> /// 滚动到某项 /// </summary> /// <param ...