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' ...
随机推荐
- HDU 6208 The Dominator of Strings ——(青岛网络赛,AC自动机)
最长的才可能成为答案,那么除了最长的以外全部insert到自动机里,再拿最长的去match,如果match完以后cnt全被清空了,那么这个最长串就是答案.事实上方便起见这个最长串一起丢进去也无妨,而且 ...
- 根据字符串从资源中取出对应的资源ResourceManager.GetObject
ResourceManager.GetObject 根据名称从资源中取出资源 需要:我有25张 五笔图片名称是a b c d ...y 这样组成的 每张图片名字只有一个名字 我想通过字符串a取出a这张 ...
- MySql的动态语句foreach各种用法比较
1.单参数List的类型: 上述collection的值为list,对应的Mapper是这样的 2.单参数array数组的类型: 上述collection为array,对应的Mapper代码: 3.自 ...
- sass登陆页面实例
sass登陆页面实例 一.总结 一句话总结: sass使用非常方便:使用就是将sass转化为css引入,并且动态监听让sass转化为css,可以很方便的所见即所得 1.sass安装? npm就可以按照 ...
- iframe的src指向的内容不刷新
想任何一种办法让iframe的src的值有变化就可以了 $("#h5Content").attr("src","${h5.url}"+&qu ...
- 如何写一个webService接口
第一次写接口的时候,感觉太过笼统,压根不知道接口是个什么东东,,后来自己也查了好多资料,才发现其实接口可以就认为是一个方法,自己多写几种以后就会发现挺简单的,自己整理了一下资料,纯属增强自己的记忆,也 ...
- Jar hell问题以及解放方法
当一个类或一个资源文件存在多个jar中,就好存在jar hell问题 可以通过以下代码来诊断问题:
- vim支持golang函数调整
golang函数跳转需要借助godef实现 godef安装如下 go get -v github.com/rogpeppe/godef go install -v github.com/rogpepp ...
- Spring的Bean的生命周期方法执行顺序测试
通过一个简单的Maven工程来演示Spring的Bean生命周期函数的执行顺序. 下面是工程的目录结构: 直接贴代码: pom.xml文件内容: <?xml version="1.0& ...
- Python的collections之defaultdict的使用及其优势
user_dict = {} users = ["baoshan1", "baoshan2", "baoshan3","baosh ...