使用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端实现邮件发送相关推荐

  1. 横扫天下mysql首充修改_横扫天下完整修复商业端(邮件发送+充值后台+物品ID+教程)...

    解压文件到D盘 1.先安装虚拟机,不会的看虚拟机安装教程 2.选择打开虚拟机,找到(D:\Hstx\hstx\CentOS 64 位.vmx)选择打开 3. 设置VMnet8 IP 为192.168. ...

  2. 在centos服务器上安装配置私人邮箱,并在web端管理邮件

    我的个人博客:逐步前行STEP 出于技术上的好(zhuang)奇(bi),我想搭建一个自己的邮箱服务器,这样的话,以后的个人资料上面可以带上一个自己域名的邮箱,再也不怕简历带qq邮箱被嫌弃了. 首先是 ...

  3. 内网java发送邮件_基于JavaMail的Java邮件发送:简单邮件发送

    电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等.但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送.本 ...

  4. java实现邮件发送_基于JavaMail的Java实现简单邮件发送功能

    电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等.但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送.本 ...

  5. 手机端和web端消息同步框架

    框架特点: 1.手机端和web端任何一方发送消息,另外一方也能收到消息 2.手机端和web端任何一方读取某消息,另外一方也能收到该消息已读 3.手机端和web端只要在线就能够实时接收到消息,不在线登录 ...

  6. Java实现QQ邮件发送原理和实现

    电子邮件 在网络中实现邮件发送和接收的功能,就必须要有专门的邮件服务器(使用SMTP协议).我们发送一封邮件,先要经过各层路由,交换机,基站,然后存到该邮件服务器,(不同的邮件有不同的邮件服务器,比如 ...

  7. python-flask(二)集成bootstrap、集成web表单、集成邮件发送

    文章目录 一.flask集成bootstrap 1. 什么是Bootstrap? 2. Flask中如何集成Bootstrap? 3. Flask-Bootstrap实现了什么? 二.Flask中集成 ...

  8. 邮件钓鱼-寻找目标开放的邮件服务端口和Web端邮箱入口

    邮件钓鱼信息收集: 信息刺探 信息验证 邮箱定位 内容伪造 文件伪造 通过扫描c段找到入口 首先要先从MX记录域名找到他的真实ip地址. 然后针对这个ip地址的c段进行扫描(25.109.110.14 ...

  9. Android端发送字符到Wed端,android应用端向web端获取字符串。

    一 发送和接收普通的JSONArray(仅仅包含字符串的数组) 1)web端: PrintWriter out = response.getWriter(); List orderAllList = ...

最新文章

  1. 恢复Win10系统默认内置应用
  2. ubuntu 安装spark
  3. 【转】深入了解CPU两大架构ARM与X86
  4. mysql怎么创建文字表_myMySQL数据库 如何将中文转拼音 MySQL数据库使用教程
  5. Qt中事件循环机制详解
  6. 人生总是起起落落落落落落...
  7. (04)System Verilog 利用函数通用总线激励驱动方法
  8. this.scrollheight获取textarea的高度是0_53小米电子时钟/v1.0 介绍
  9. 日期处理string 与 DateTime相互转化
  10. HDU-----(4858)项目管理(模拟)
  11. 36. LatencyTOP
  12. 关于FCN代码实现(实践篇)
  13. 有赞云支付php接口,Erphpdown wordpress插件集成有赞云支付的接口申请方法[已失效]...
  14. android工程师专业技能,android开发工程师简历中的专业技能怎么写
  15. Python报错记录之“list indices must be integers or slices, not str”
  16. idea 2019激活置2099年教程 diea版本为2018.3版
  17. MySQL忘记/无root密码,强制修改root密码
  18. 2019年什么工作最有前景?互联网/IT行业职业方向大盘点!
  19. MyEclipse2014用外部的浏览器运行web项目
  20. 台式计算机怎么加声音,台式电脑音量加到最大还是没有声音怎么办,教你一招立马解决...

热门文章

  1. python tk文本框_python图形界面tk 1.5 文本框(Text box | Entry)
  2. iOS学习重要知识点整理02-进程和线程的一个简单解释
  3. 查看并彻底清除掉流氓软件、弹窗广告
  4. STM32F103ZE单片机FSMC接口读取NAND Flash芯片K9F1G08U0E的数据时出现数据丢失的解决办法
  5. Cygwin 完全下载及安装
  6. 《使用第三方库来显示jpeg图片》
  7. 学校永远不会教你的财富课:养鹅
  8. Cadence每日一学_11 | OrCAD原理图DRC检查、BOM表导出、PDF导出、网表导出
  9. 迷你播放器--第一阶段(2)--退出时自动最小化(不是关闭),增加当前播放曲目的跑马灯效果
  10. 计算机网络管理云,云考试系统云平台/计算机网络管理考试时间-考试