博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java邮件发送
阅读量:6903 次
发布时间:2019-06-27

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

计算机网络课程设计竟然是设计邮件系统…晕唉。

邮箱服务涉及SMTP,POP3,MIME等协议,要是让我从最底层去实现,很明显不可能呀[捂脸]

站在前辈的肩上,可以少走很多弯路!

参考资料

图片来源参考资料2

这里写图片描述

这里写图片描述

这里写图片描述

所需jar包maven依赖

javax.mail
mail
1.4.7

具体实现邮件发送

package com.wy.action;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;/** * 发送图片邮件 * @author 沪旦铭 * */public class SendEmail {
//用于给用户发送邮件的邮箱 private static String from = ""; //接收人邮箱 private static String to = ""; //邮箱的用户名 这个和from一样的内容 private static String username = ""; //邮箱的密码 注意这个密码 private static String password = ""; //发送邮件的服务器地址 private static String host = "smtp.163.com"; public static void main(String[] args) throws Exception { Properties prop = new Properties(); // 设置邮件服务器主机名 prop.setProperty("mail.host", host); // 发送邮件协议名称 prop.setProperty("mail.transport.protocol", "smtp"); // 发送服务器需要身份验证 prop.setProperty("mail.smtp.auth", "true"); // 开启debug调试 prop.setProperty("mail.debug", "true"); //使用JavaMail发送邮件的5个步骤 //1、创建session Session session = Session.getInstance(prop); //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 session.setDebug(true); //2、通过session得到transport对象 Transport ts = session.getTransport(); //3、连上邮件服务器,需要发件人提供邮箱的用户名和密码进行验证 ts.connect(host, SendEmail.username,SendEmail.password ); //4、创建邮件 //4.1创建图片邮件// Message message = createImageMail(session); //4.2创建附件邮件// Message message = createAttachMail(session); //4.3创建图片和附件邮件 Message message = createMixedMail(session); //5、发送邮件 ts.sendMessage(message, message.getAllRecipients()); ts.close(); } //创建还有图片的邮件 private static Message createImageMail(Session session) throws AddressException, MessagingException, FileNotFoundException, IOException { //创建邮件 Message message = new MimeMessage( session ); //设置邮件基本信息 message.setFrom(new InternetAddress( SendEmail.from )); //收件人 Message.RecipientType.TO //Message.RecipientType.BCC 密送人 (即抄送人不知道) //Message.RecipientType.CC 抄送人 message.setRecipient(Message.RecipientType.TO, new InternetAddress( SendEmail.to)); //设置邮箱主题|邮箱标题 message.setSubject("这是一张图片"); //准备邮件正文数据 MimeBodyPart part = new MimeBodyPart(); part.setContent("这是一封有图片的邮件", "text/html;charset=UTF-8"); //准备图片数据 MimeBodyPart image = new MimeBodyPart(); DataHandler dh = new DataHandler(new FileDataSource("g://header.jpg")); image.setDataHandler(dh); image.setContentID("1.jpg"); //描述数据关系 MimeMultipart mm = new MimeMultipart(); mm.addBodyPart(part); mm.addBodyPart(image); mm.setSubType("related"); message.setContent(mm); message.saveChanges(); //保存邮件到本地 message.writeTo( new FileOutputStream("g://imageEmail.eml") ); return message; } //附件邮件发送 public static MimeMessage createAttachMail(Session session) throws Exception{ //创建邮件 MimeMessage message = new MimeMessage( session ); //设置邮件基本信息 message.setFrom(new InternetAddress( SendEmail.from )); //收件人 message.setRecipient(Message.RecipientType.TO, new InternetAddress(SendEmail.to)); //设置邮箱主题|邮箱标题 message.setSubject("附件邮件发送"); //创建邮件正文,为了避免邮件正文中文乱码问题,需要使用charset=UTF-8指明字符编码 MimeBodyPart text = new MimeBodyPart(); text.setContent("使用JavaMail创建的带附件的邮件", "text/html;charset=UTF-8"); //创建邮件附件 MimeBodyPart attach = new MimeBodyPart(); attach.attachFile("g://header.jpg"); //创建容器描述数据关系 MimeMultipart mp = new MimeMultipart(); mp.addBodyPart(text); mp.addBodyPart(attach); mp.setSubType("mixed"); message.setContent(mp); message.saveChanges(); //将创建的Email写入到g盘存储 message.writeTo(new FileOutputStream("g://attachMail.eml")); //返回生成的邮件 return message; } //创建图片和附件邮件 private static MimeMessage createMixedMail(Session session) throws AddressException, MessagingException, IOException { //创建邮件 MimeMessage message = new MimeMessage( session ); //设置邮件基本信息 message.setFrom(new InternetAddress( SendEmail.from )); //收件人 message.setRecipient(Message.RecipientType.TO, new InternetAddress(SendEmail.to)); //设置邮箱主题|邮箱标题 message.setSubject("图片和附件邮件发送"); //准备邮件正文数据 MimeBodyPart text = new MimeBodyPart(); text.setContent("这是图片邮件,当然包括附件", "text/html;charset=UTF-8"); //准备图片数据 MimeBodyPart image = new MimeBodyPart(); DataHandler dh = new DataHandler(new FileDataSource("g://header.jpg")); image.setDataHandler(dh); image.setContentID("1.jpg"); //创建邮件附件 MimeBodyPart attach = new MimeBodyPart(); attach.attachFile("g://header.jpg"); //创建容器描述数据关系 MimeMultipart mp = new MimeMultipart(); mp.addBodyPart(text); mp.addBodyPart(image); mp.addBodyPart(attach); mp.setSubType("mixed"); message.setContent(mp); message.saveChanges(); return message; }}
你可能感兴趣的文章
vim常用技巧
查看>>
Oracle性能优化之 Oracle里的优化器
查看>>
HTTP
查看>>
Tomcat Connector三种执行模式(BIO, NIO, APR)的比較和优化
查看>>
Spring Boot快速搭建Web工程
查看>>
mixare的measureText方法在频繁调用时抛出“referencetable overflow max 1024”的解决方式...
查看>>
ffmpeg编解码视频导致噪声增大的一种解决方法
查看>>
使用HTML5的Notification API制作web通知的教程(转)
查看>>
Awesome Big Data List
查看>>
Java分代垃圾回收机制:年轻代/年老代/持久代(转)
查看>>
jquery判断显示的元素并获取显示元素数据
查看>>
RHEL7 MariaDB测试
查看>>
42 Bing Search Engine Hacks
查看>>
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
查看>>
在Linux/Centos下用wondershaper限速
查看>>
sqlserver中的CHARINDEX用法
查看>>
Java获取此次请求URL以及服务器根路径的方法
查看>>
hibernate、mybatis、spring data 的对比
查看>>
虚拟串口VSPD破解版 亲测win10 64可用
查看>>
读《买个好房子》| 买房是真的险恶
查看>>