Web端实现邮件发送
使用java程序向用户邮箱发送文本图片等
发送前准备:
使用POP3(获取)/SMTP(发送)协议
在邮箱上开启此项服务,并获得相关的专用密码
编写前端页面获取相关用户参数:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<form method="post" action="${pageContext.request.contextPath}/RegisterServlet.do">用户名:<input type="text" name="username"><br><hr>密码 :<input type="text" name="password"><br><hr>邮箱:<input type="text" name="email"><br><hr><input type="submit" value="注册 ">
</form>
</body>
</html>
效果:
输入相关信息后点击提交,得到用户邮箱号后就可以发送邮件了!
不过在此之前,还需要一个实体类来保存用户的相关信息:
//使用了lombok注解
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String username;private String password;private String email;
}
为了控制程序的跳转:
<!--前端点击提交后转向-->
<servlet><servlet-name>RegisterServlet.do</servlet-name><servlet-class>MailSending.Test.servlet.RegisterServlet</servlet-class></servlet><servlet-mapping><servlet-name>RegisterServlet.do</servlet-name><url-pattern>/RegisterServlet.do</url-pattern></servlet-mapping>
转向到:
import MailSending.Test.pojo.User;
import MailSending.Test.utils.SendMail;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class RegisterServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");String password = req.getParameter("password");String email = req.getParameter("email");User usr=new User(username,password,email);SendMail sendMail = new SendMail(usr); //这里跳转到另一个类实现sendMail.start(); //开启多线程,发送需要时间,这段时间同时让页面跳转req.setAttribute("message","您已注册成功!我们发送了邮件信息");req.getRequestDispatcher("MailSuccess.jsp").forward(req,resp);//转发页面}
}
发送后会跳转到这,会提示有没有成功:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<p>${message}</p>
</body>
</html>
import MailSending.Test.pojo.User;import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
import javax.mail.Authenticator;//发送纯文本
public class SendMail extends Thread {private User user;public SendMail(User usr){this.user=usr;}@Overridepublic void run() {try{Properties prop = new Properties();prop.setProperty("mail.host","smtp.163.com"); //设置邮箱服务器prop.setProperty("mail.transport.protocol","smtp"); //邮件发送协议prop.setProperty("mail.smtp.auth","true"); //需要验证用户名密码//1、创建定义整个应用程序所需的环境信息的Seeion对象Session session=Session.getDefaultInstance(prop, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication("notre1024@163.com","PSMRCQGOPXYCKWJL"); //发件人用户名,授权码}});session.setDebug(true);//开后session的debug模式,这样就可以查看到程序发送Email的运行状态//2、通过Session得到transport对象Transport ts = session.getTransport();//3、使用邮箱的用户名和授权码连上邮件服务器ts.connect("smtp.163.com","notre1024@163.com","PSMRCQGOPXYCKWJL");//4、创建邮件MimeMessage message = new MimeMessage(session); //创建邮件message.setFrom(new InternetAddress("notre1024@163.com")); //发件人message.setRecipient(Message.RecipientType.TO,new InternetAddress(user.getEmail())); //收件人message.setSubject("konan"); //邮件标题String info="用户名:"+user.getUsername()+" 密码:"+user.getPassword()+" 请妥善保管!";message.setContent(info,"text/html;charset=utf-8"); //内容,支持html标签message.saveChanges();//5、发送邮件ts.sendMessage(message,message.getAllRecipients());ts.close(); //关闭连接}catch (Exception e){e.printStackTrace();}}
}
OK!到这完成了,在配合一些其他复杂的操作,就可以实现正常网站发邮箱的功能。
不过,但是发发文字邮件的内容可不够丰富,继续看下面如何发送复杂的邮件!
发送文本和图片:
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties;//发送文本和图片
public class MailDemo {public static void main(String[] args) throws MessagingException {Properties prop = new Properties();prop.setProperty("mail.host","smtp.163.com"); //设置邮箱服务器prop.setProperty("mail.transport.protocol","smtp"); //邮件发送协议prop.setProperty("mail.smtp.auth","true"); //需要验证用户名密码//关于QQ邮箱,还要设置SSL加密// MailSSLSocketFactory sf = new MailSSLSocketFactory();// sf.setTrustAllHosts(true);// prop.put("mail.smtp.ssl.trust", "true");// prop.put("mail.smtp.ssl.socketFactory", sf);//使用JavaMail发送邮件的5个步骤//1、创建定义整个应用程序所需的环境信息的Seeion对象Session session=Session.getDefaultInstance(prop, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication("notre1024@163.com","PSMRCQGOPXYCKWJL"); //发件人用户名,授权码}});session.setDebug(true);//开后session的debug模式,这样就可以查看到程序发送Email的运行状态//2、通过Session得到transport对象Transport ts = session.getTransport();//3、使用邮箱的用户名和授权码连上邮件服务器ts.connect("smtp.163.com","notre1024@163.com","PSMRCQGOPXYCKWJL");//4、创建邮件MimeMessage message = new MimeMessage(session); //创建邮件message.setFrom(new InternetAddress("notre1024@163.com")); //发件人message.setRecipient(Message.RecipientType.TO,new InternetAddress("1720528586@qq.com")); //收件人message.setSubject("konan"); //邮件标题//===========================================================================================//准备图片数据MimeBodyPart image=new MimeBodyPart();DataHandler dH = new DataHandler(new FileDataSource("src/main/resources/人像.png"));image.setDataHandler(dH);image.setContentID("rx.png");//准备正文数据MimeBodyPart text = new MimeBodyPart();text.setContent("<h3 style='color:blue'>这是一封邮件,带正文带图片<hr><img src='cid:rx.png'></h3>","text/html;charset=utf-8");//描述数据关系MimeMultipart mm = new MimeMultipart();mm.addBodyPart(text);mm.addBodyPart(image);mm.setSubType("related");//设置到消息中,保存修改message.setContent(mm);message.saveChanges();//============================================================================================//5、发送邮件ts.sendMessage(message,message.getAllRecipients());ts.close(); //关闭连接}
}
发送文本,图片和附件
Web端实现邮件发送相关推荐
- 横扫天下mysql首充修改_横扫天下完整修复商业端(邮件发送+充值后台+物品ID+教程)...
解压文件到D盘 1.先安装虚拟机,不会的看虚拟机安装教程 2.选择打开虚拟机,找到(D:\Hstx\hstx\CentOS 64 位.vmx)选择打开 3. 设置VMnet8 IP 为192.168. ...
- 在centos服务器上安装配置私人邮箱,并在web端管理邮件
我的个人博客:逐步前行STEP 出于技术上的好(zhuang)奇(bi),我想搭建一个自己的邮箱服务器,这样的话,以后的个人资料上面可以带上一个自己域名的邮箱,再也不怕简历带qq邮箱被嫌弃了. 首先是 ...
- 内网java发送邮件_基于JavaMail的Java邮件发送:简单邮件发送
电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等.但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送.本 ...
- java实现邮件发送_基于JavaMail的Java实现简单邮件发送功能
电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等.但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送.本 ...
- 手机端和web端消息同步框架
框架特点: 1.手机端和web端任何一方发送消息,另外一方也能收到消息 2.手机端和web端任何一方读取某消息,另外一方也能收到该消息已读 3.手机端和web端只要在线就能够实时接收到消息,不在线登录 ...
- Java实现QQ邮件发送原理和实现
电子邮件 在网络中实现邮件发送和接收的功能,就必须要有专门的邮件服务器(使用SMTP协议).我们发送一封邮件,先要经过各层路由,交换机,基站,然后存到该邮件服务器,(不同的邮件有不同的邮件服务器,比如 ...
- python-flask(二)集成bootstrap、集成web表单、集成邮件发送
文章目录 一.flask集成bootstrap 1. 什么是Bootstrap? 2. Flask中如何集成Bootstrap? 3. Flask-Bootstrap实现了什么? 二.Flask中集成 ...
- 邮件钓鱼-寻找目标开放的邮件服务端口和Web端邮箱入口
邮件钓鱼信息收集: 信息刺探 信息验证 邮箱定位 内容伪造 文件伪造 通过扫描c段找到入口 首先要先从MX记录域名找到他的真实ip地址. 然后针对这个ip地址的c段进行扫描(25.109.110.14 ...
- Android端发送字符到Wed端,android应用端向web端获取字符串。
一 发送和接收普通的JSONArray(仅仅包含字符串的数组) 1)web端: PrintWriter out = response.getWriter(); List orderAllList = ...
最新文章
- 恢复Win10系统默认内置应用
- ubuntu 安装spark
- 【转】深入了解CPU两大架构ARM与X86
- mysql怎么创建文字表_myMySQL数据库 如何将中文转拼音 MySQL数据库使用教程
- Qt中事件循环机制详解
- 人生总是起起落落落落落落...
- (04)System Verilog 利用函数通用总线激励驱动方法
- this.scrollheight获取textarea的高度是0_53小米电子时钟/v1.0 介绍
- 日期处理string 与 DateTime相互转化
- HDU-----(4858)项目管理(模拟)
- 36. LatencyTOP
- 关于FCN代码实现(实践篇)
- 有赞云支付php接口,Erphpdown wordpress插件集成有赞云支付的接口申请方法[已失效]...
- android工程师专业技能,android开发工程师简历中的专业技能怎么写
- Python报错记录之“list indices must be integers or slices, not str”
- idea 2019激活置2099年教程 diea版本为2018.3版
- MySQL忘记/无root密码,强制修改root密码
- 2019年什么工作最有前景?互联网/IT行业职业方向大盘点!
- MyEclipse2014用外部的浏览器运行web项目
- 台式计算机怎么加声音,台式电脑音量加到最大还是没有声音怎么办,教你一招立马解决...
热门文章
- python tk文本框_python图形界面tk 1.5 文本框(Text box | Entry)
- iOS学习重要知识点整理02-进程和线程的一个简单解释
- 查看并彻底清除掉流氓软件、弹窗广告
- STM32F103ZE单片机FSMC接口读取NAND Flash芯片K9F1G08U0E的数据时出现数据丢失的解决办法
- Cygwin 完全下载及安装
- 《使用第三方库来显示jpeg图片》
- 学校永远不会教你的财富课:养鹅
- Cadence每日一学_11 | OrCAD原理图DRC检查、BOM表导出、PDF导出、网表导出
- 迷你播放器--第一阶段(2)--退出时自动最小化(不是关闭),增加当前播放曲目的跑马灯效果
- 计算机网络管理云,云考试系统云平台/计算机网络管理考试时间-考试