一.效果图

我用的foxmail来接受的邮件的,你可以安装,也可以选择不安装

二.需要

1.mail.jar包

2.你需要开启你的qq邮箱

https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

开启这个服务你才能发邮件,(你要记住你的授权码,用做你登录邮箱的密码,不能用qq密码,会报错)

三.实现的步骤

1.创建一个web项目

2.项目结构图

3.编写filter类,解决中文乱码的问题

package com.tz.filter;import java.io.IOException;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;public class MyFilter implements Filter
{@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest req, ServletResponse response, FilterChain chain)throws IOException, ServletException {// 要增强的方法:request.getParameter// 被代理的对象: requestfinal HttpServletRequest request=(HttpServletRequest)req;// 动态的生成代理对象HttpServletRequest hsr=(HttpServletRequest)Proxy.newProxyInstance(request.getClass().getClassLoader(), request.getClass().getInterfaces(),new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// 1 判断是否是需要增强的方法 getParameterif("getParameter".equals(method.getName())){// 知道getParameter使用的是哪个提交方式 String m = request.getMethod();// 判断是get还是postif("get".equalsIgnoreCase(m)){// 以前方法调用后的乱码String s =(String)method.invoke(request, args);// 增强--解决乱码s=new String(s.getBytes("iso8859-1"),"utf-8");return s;}if("post".equalsIgnoreCase(m)){request.setCharacterEncoding("utf-8");}}// 如果是别的方法return method.invoke(request, args);}});// 放行chain.doFilter(hsr, response);}@Overridepublic void destroy() {// TODO Auto-generated method stub}}

在web.xml中配置filter

 <filter><filter-name>myfilter</filter-name><filter-class>com.tz.filter.MyFilter</filter-class></filter><filter-mapping><filter-name>myfilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

4.编写MailServlet类(主要类)

package com.tz.servlet;import javax.mail.*;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;@WebServlet("/mail")
public class MailServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {try {//接受前端传递过来的值//收件人String name = req.getParameter("name");//主题String title= req.getParameter("title");//正文String content=req.getParameter("content");//账户://用户名String username ="204732791@qq.com";//密码 授权码 lrkxqparssdfsdf  这种样子的String password ="授权码";  //这个必须是必须是授权码 不然要抱错//https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256// 创建会话对象//1、获得邮箱服务的连接(会话对象)Properties props = new Properties();//封装数据props.put("mail.transport.protocol", "SMTP");//设置发邮件的协议props.put("mail.host", "smtp.qq.com");//设置发邮件的地址(smtp邮箱服务器地址) 邮件发送的主机props.put("mail.smtp.auth", "true");// 指定验证为true  密码安全验证//创建一个邮箱Session session = Session.getInstance(props);//会话对象MimeMessage ms = new MimeMessage(session);//创建邮件对象//设置邮箱的来源Address toAddress;toAddress = new InternetAddress(username);ms.setFrom(toAddress); //设置发送者//设置邮箱的接受者  就是前端传来的namems.setRecipients(Message.RecipientType.TO,name);ms.setSubject(title);ms.setText(content);ms.saveChanges();//保存//创建一个发送工具Transport ts = session.getTransport("smtp");ts.connect(username,password);ts.sendMessage(ms,ms.getAllRecipients());//拿出所有的接受者ts.close();String msg = "发送成功";req.setAttribute("msg",msg);req.getRequestDispatcher("/message.jsp").forward(req,resp);} catch (Exception e) {e.printStackTrace();String msg = "发送失败";req.setAttribute("msg",msg);req.getRequestDispatcher("/message.jsp").forward(req,resp);}}
}

5.编写index.jsp页面(你也可以做好看点,我为了方便就没有用css来修饰)

<%--Created by IntelliJ IDEA.User: 20473Date: 2019/4/14Time: 16:29To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>$Title$</title></head><body><form action="${pageContext.request.contextPath}/mail" method="post">收件人:<input type="text" name ="name"><br><br><br>主题 :<input type="text" name = "title"><br><br><br><br>正文 :<textarea cols="20" rows="10" name="content"></textarea><br><br><br><input type="submit" value="发送"></form></body>
</html>

一个message.jsp页面,用于发送过后页面显示信息,来表示发送失败还是成为

<%--Created by IntelliJ IDEA.User: 20473Date: 2019/4/14Time: 23:22To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>信息页面</title>
</head>
<body>
<h2>${msg}</h2>
</body>
</html>

好了,一个简单的发送邮件的案例就制作完成了,不仅仅能发qq邮箱,也可以发送其他的邮箱的,

也可以实现群发邮件,邮件中间有英文状态的","号隔开

message.setRecipient(RecipientType.TO, new InternetAddress(email)); // 设置发送方式与接收者,这个可以单发,不能群发

ms.setRecipients(Message.RecipientType.TO,name);  //群发

javaweb实现qq邮箱相关推荐

  1. JavaWeb实现qq邮箱验证(一)

    需求:用户注册时给邮箱发送邮件,得到验证码并填写,进行激活邮箱. 有基础的可以直接看下篇 JavaWeb实现qq邮箱验证(二):https://blog.csdn.net/BlackPlus28/ar ...

  2. javaWeb实现qq邮箱验证(二)

    上篇写的实现基本上是一个工具类,并没封装成下图这样方式(梨视频注册界面),现在开始完善上篇的java邮箱激活验证功. java邮箱验证地址:https://blog.csdn.net/BlackPlu ...

  3. JavaWeb QQ邮箱找回密码

    我的上一篇博客,已经写了登录注册,接下来写QQ邮箱找回密码 首先:我们需要在 QQ邮箱设置中获取授权码,步骤如下 进入QQ邮箱---->设置---->账户---->开启服务:POP3 ...

  4. 大佬教你怎样防止同事用 QQ 邮箱提交公司代码?

    事情是这样的,最近组里新建了一个代码仓库来开发一个新的产品,再加上今天北京下大雨很多同事选择在家工作,于是我就选择用自己的个人电脑来工作. 但我的个人电脑里面的 Git 信息是用的我自己的个人邮箱: ...

  5. qq邮箱mx服务器,电子邮箱如何设置域名MX记录

    电子邮件是大家经常使用的办公工具之一,对于普通用户来说,您可能不了解什么是MX记录,下边我们就来为大家介绍一下MX记录以及MX记录的设置方法! 什么是MX记录? 用于电子邮件系统发邮件时根据收信人的地 ...

  6. qq邮箱高频率邮件来源自动屏蔽的信任办法

    欢迎访问我的个人主页 qupzhi.com ,转载请注明出处. 摘要:我们在使用QQ邮箱作为告警接收邮箱的时候,用了一段时间发现,告警邮箱再也没办法发出来了,非常的困惑,检查了全部的网络策略.dns. ...

  7. java发送qq邮箱不成功_java,_使用QQ邮箱发送邮件遇到的问题,java - phpStudy

    使用QQ邮箱发送邮件遇到的问题 代码是在网上抄的别人今年写的,但是我运行起来一直报错,也不知道什么原因,请大神帮忙指点一下::谢谢!!! 以下是我的代码 public class Sendmail8 ...

  8. TP5实现邮件发送(PHP 利用QQ邮箱发送邮件「PHPMailer」)

    在 PHP 应用开发中,往往需要验证用户邮箱.发送消息通知,而使用 PHP 内置的 mail() 函数,则需要邮件系统的支持. 如果熟悉 IMAP/SMTP 协议,结合 Socket 功能就可以编写邮 ...

  9. DedeCMS实现自定义表单提交后发送指定QQ邮箱法

    https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=monline_3_dg&wd=dedecms 邮箱&oq=d ...

最新文章

  1. 一个GDIPlus的Bug -- OutofMemory异常
  2. 全球每年仅一位!中国数学家印卧涛荣获优化领域Egon Balas奖
  3. 字符串操作、文件操作,英文词频统计预处理
  4. [C#]获得线程池中活动的线程数
  5. Moving Average
  6. 零基础Python学习方法,Python入门必读
  7. webpack 编译完成执行代码
  8. 【汇编基础】SIMD除法的实现
  9. Javassist进行方法插桩
  10. Java项目开发中实现分页的三种方式一篇包会
  11. 深度置信网络基础知识及程序代码
  12. 国开电大 财务报表分析 形考任务
  13. 收录国外造船信息-Pursuit of a product work breakdown structure (PWBS)
  14. 为什么有的人飞黄腾达,有的人穷困潦倒 .
  15. 图像处理之高斯混合模型
  16. Tik Tok直播:如何做好TikTok直播?
  17. 服务器攻击后的善后工作
  18. Ubuntu16.04搭建ftp/tftp/nfs/ssh服务器
  19. 软件功能测试订票系统,QTP自动化测试自带订票系统登录功能
  20. 电商营销活动的优惠金额精度问题

热门文章

  1. 详细解析 JavaScript 获取元素的坐标
  2. python画春节_过年,大家都在集五福,程序员整理了2018年python学习路线及方法...
  3. 关于逆元(费马小定理,exgcd)
  4. 计算机专业二本分数线大概是,我高考大概只能考400分了,想学计算机,你们说能到什么学校...
  5. win10扬声器红叉_win 10小喇叭显示红叉,怎么解决?
  6. 后羿 02 ‖ 嫦娥
  7. hdu1263 水果
  8. APP开发外包注意事项
  9. 解决Linux服务器Debian9.9执行source命令不生效问题
  10. 你也可以做一个小米魅族网站(WOW.js:WOW.js – 在页面滚动时展现动感的元素动画效果)