博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
复杂邮件的发送(添加附件)
阅读量:3965 次
发布时间:2019-05-24

本文共 8106 字,大约阅读时间需要 27 分钟。

1、文件构成

在这里插入图片描述

2.发送图片和附件

也要导包

activation-1.1.1.jar
mail-1.4.7.jar:

package com.loey.mail;import com.sun.mail.util.MailSSLSocketFactory;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 ComplexMail {
public static void main(String[] args) throws Exception {
Properties prop=new Properties(); prop.setProperty("mail.host","smtp.qq.com");///设置QQ邮件服务器 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.enable","true"); prop.put("mail.smtp.ssl.socketFactory",sf); //使用javaMail发送邮件的5个步骤 //1.创建定义整个应用程序所需要的环境信息的session对象 Session session=Session.getDefaultInstance(prop, new Authenticator() {
@Override protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("XXXXXqq.com","授权码"); } }); //开启session的debug模式,这样可以查看到程序发送Email的运行状态 session.setDebug(true); //2.通过session得到transport对象 Transport ts=session.getTransport(); //3.使用邮箱的用户名和授权码连上邮件服务器 ts.connect("smtp.qq.com","XXXXX@qq.com","授权码"); //4.创建邮件:写文件 //注意需要传递session MimeMessage message=new MimeMessage(session); //指明邮件的发件人 message.setFrom(new InternetAddress("XXXXXX@qq.com")); //指明邮件的收件人 message.setRecipient(Message.RecipientType.TO,new InternetAddress("XXXXXXXX@qq.com")); //邮件标题 message.setSubject("邮件主题"); //邮件的文本内容 //=================================准备图片数据======================================= MimeBodyPart image=new MimeBodyPart(); //图片需要经过数据化的处理 DataHandler dh=new DataHandler(new FileDataSource("图片路径")); //在part中放入这个处理过图片的数据 image.setDataHandler(dh); //给这个part设置一个ID名字 image.setContentID("bz.jpg"); //准备正文的数据 MimeBodyPart text=new MimeBodyPart(); text.setContent("我的图片:","text/html;charset=UTF-8"); //=================================准备附件数据 MimeBodyPart body= new MimeBodyPart(); body.setDataHandler(new DataHandler(new FileDataSource("附件路径"))); body.setFileName("1.txt"); //描述数据关系 MimeMultipart mm=new MimeMultipart(); mm.addBodyPart(text); mm.addBodyPart(body); mm.addBodyPart(image); // mm.setSubType("related");如果只发送图片,则关系为related mm.setSubType("mixed"); //设置到消息中,保存修改 message.setContent(mm); message.saveChanges(); //5.发送邮件 ts.sendMessage(message,message.getAllRecipients()); //6.关闭连接 ts.close(); }}

3.练习:注册成功后发送注册成功的邮件到你邮箱

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>      $Title$     
用户名:
密码:
邮箱:

success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    Title恭喜你注册成功,你将接收到一封邮件,请注意查收,如果网络延迟,请你耐心等待一会~

实体类User.java

package com.loey.pojo;public class User {
private String userName; private String pwd; private String email; @Override public String toString() {
return "User{" + "userName='" + userName + '\'' + ", pwd='" + pwd + '\'' + ", email='" + email + '\'' + '}'; } public String getUserName() {
return userName; } public void setUserName(String userName) {
this.userName = userName; } public String getPwd() {
return pwd; } public void setPwd(String pwd) {
this.pwd = pwd; } public String getEmail() {
return email; } public void setEmail(String email) {
this.email = email; } public User(String userName, String pwd, String email) {
this.userName = userName; this.pwd = pwd; this.email = email; } public User() {
}}

RegistServlet.java

public class RegistServlet extends HttpServlet {
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username=req.getParameter("username"); String password=req.getParameter("pwd"); String email=req.getParameter("email"); User user = new User(username, password, email); MailUtil mail = new MailUtil(user); mail.start(); resp.sendRedirect("/11_file/success.jsp"); }}

web.xml配置

regist
com.loey.servlet.RegistServlet
regist
/regist

MailUtil.java(核心)

package com.loey.utils;import com.loey.pojo.User;import com.sun.mail.util.MailSSLSocketFactory;import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.util.Properties;/** * @ClassName MailUtil * @Author 刘犁青 邮箱:loey724@163.com * @Date Create in 2020/12/18 20:48 * @Version 1.0 **/public class MailUtil extends Thread{
//发件人邮箱地址 private String from="XXXX@qq.com"; private String host="smtp.qq.com"; private User user; public MailUtil(User user){
this.user=user; } @Override public void run() {
try {
Properties prop=new Properties(); prop.setProperty("mail.host",host);///设置QQ邮件服务器 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.enable","true"); prop.put("mail.smtp.ssl.socketFactory",sf); //使用javaMail发送邮件的5个步骤 //1.创建定义整个应用程序所需要的环境信息的session对象 Session session= Session.getDefaultInstance(prop, new Authenticator() {
@Override protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(from,"授权码"); } }); //开启session的debug模式,这样可以查看到程序发送Email的运行状态 session.setDebug(true); //2.通过session得到transport对象 Transport ts=session.getTransport(); //3.使用邮箱的用户名和授权码连上邮件服务器 ts.connect(host,from,"授权码"); //4.创建邮件:写文件 //注意需要传递session MimeMessage message=new MimeMessage(session); //指明邮件的发件人 message.setFrom(new InternetAddress(from)); //指明邮件的收件人 message.setRecipient(Message.RecipientType.TO,new InternetAddress(user.getEmail())); //邮件标题 message.setSubject("注册通知"); //邮件的文本内容 message.setContent("恭喜你("+user.getUserName()+")成功注册!"+"密码:"+user.getPwd() ,"text/html;charset=UTF-8"); //5.发送邮件 ts.sendMessage(message,message.getAllRecipients()); //6.关闭连接 ts.close(); }catch (Exception e){
System.out.println(e); } }}

结果

在这里插入图片描述

成功后你的邮箱将收到一封邮件并且页面跳转为
在这里插入图片描述

转载地址:http://xxuki.baihongyu.com/

你可能感兴趣的文章
Mule ESB-Content-Based Routing Tutorial(3)
查看>>
年末项目经验总结
查看>>
做事情要放下面子,拿起责任
查看>>
敏捷开发实践(1)-故事工作量估算导致的问题
查看>>
记一次解决jenkins持续构建,自动部署的问题
查看>>
敏捷开发实践(2)-要不要文档?
查看>>
写博意味着什么
查看>>
比较Cint() , int() , fix() ,round()的区别
查看>>
举例说明常用字符串处理函数
查看>>
软件生存期模型
查看>>
制定计划(问题的定义,可行性研究)
查看>>
需求分析
查看>>
软件设计
查看>>
程序编码
查看>>
软件测试
查看>>
软件维护
查看>>
软件项目管理
查看>>
面向过程的分析方法
查看>>
软件设计基础
查看>>
Hibernate性能优化
查看>>