本文共 8106 字,大约阅读时间需要 27 分钟。
也要导包
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(); }}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>$Title$
<%@ page contentType="text/html;charset=UTF-8" language="java" %>Title 恭喜你注册成功,你将接收到一封邮件,请注意查收,如果网络延迟,请你耐心等待一会~
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() { }}
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"); }}
regist com.loey.servlet.RegistServlet regist /regist
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/