IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Servlet邮件发送 -> 正文阅读

[网络协议]Servlet邮件发送

  • 发送邮件:SMTP 协议

  • 接收邮件:POP3 协议

  • 需要准备 JavaMail API 和 Java Activation Framework

    mail.jar 和 activation.jar

  • 要发送邮件,需要获得协议和支持(开启 POP3 和 SMTP 服务)

简单邮件发送


import com.sun.mail.util.MailSSLSocketFactory;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class Mail {
    public static void main(String[] args) throws Exception{
        Properties properties = new Properties();
        properties.setProperty("mail.host","smtp.qq.com");       //设置QQ邮箱服务器
        properties.setProperty("mail.transport.protocol","smtp");       //邮件发送协议
        properties.setProperty("mail.smtp.auth","true");       //需要验证用户名密码
        //QQ邮箱还需要设置SSL加密,加上以下代码即可
        MailSSLSocketFactory mailSSLSocketFactory = new MailSSLSocketFactory();
        mailSSLSocketFactory.setTrustAllHosts(true);
        properties.put("mail.smtp.ssl.enable","true");
        properties.put("mail.smtp.ssl.socketFactory",mailSSLSocketFactory);
        //使用JavaMail发送邮件的5个步骤
        //1.创建定义整个应用程序所需的环境信息的Session对象
        Session session=Session.getDefaultInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("邮箱","授权码");
            }
        });
        session.setDebug(true);       //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
        //2.通过session得到transport对象
        Transport transport = session.getTransport();
        //3.使用邮箱的用户名和授权码连上邮件服务器
        transport.connect("smtp.qq.com","邮箱","授权码");
        //4.创建邮件
        MimeMessage message = new MimeMessage(session);       //需要传递session
        message.setFrom(new InternetAddress("发件人邮箱"));
        message.setRecipient(Message.RecipientType.TO,new InternetAddress("收件人邮箱"));
        message.setSubject("只有文本的简单邮件");       //设置邮件标题
        message.setContent("你好","text/html;charset=utf-8");       //邮件的内容
        //5.发送邮件
        transport.sendMessage(message,message.getAllRecipients());
        //6.关闭连接
        transport.close();
    }
}

MIME


MIME(多用途互联网邮件扩展类型)

一个互联网标准,扩展了电子邮件标准,使其能够支持:

  • 非 ASCII 字符文本
  • 非文本可是附件(二进制,声音,图像等)
  • 由多部分组成的消息体
  • 包含非 ASCII 字符的头消息

MimeBodypart 类

  • 表示的是一个 MIME 消息

MimeMultipart 类

  • 组合多个消息的类

在这里插入图片描述

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 MailMime {
    public static void main(String[] args) throws Exception{
        Properties properties = new Properties();
        properties.setProperty("mail.host","smtp.qq.com");       //设置QQ邮箱服务器
        properties.setProperty("mail.transport.protocol","smtp");       //邮件发送协议
        properties.setProperty("mail.smtp.auth","true");       //需要验证用户名密码
        //QQ邮箱还需要设置SSL加密,加上以下代码即可
        MailSSLSocketFactory mailSSLSocketFactory = new MailSSLSocketFactory();
        mailSSLSocketFactory.setTrustAllHosts(true);
        properties.put("mail.smtp.ssl.enable","true");
        properties.put("mail.smtp.ssl.socketFactory",mailSSLSocketFactory);
        //使用JavaMail发送邮件的5个步骤
        //1.创建定义整个应用程序所需的环境信息的Session对象
        Session session=Session.getDefaultInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("邮箱","授权码");
            }
        });
        session.setDebug(true);       //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
        //2.通过session得到transport对象
        Transport transport = session.getTransport();
        //3.使用邮箱的用户名和授权码连上邮件服务器
        transport.connect("smtp.qq.com","邮箱","授权码");
        //4.创建邮件
        MimeMessage message = new MimeMessage(session);       //需要传递session
        message.setFrom(new InternetAddress("发件人邮箱"));
        message.setRecipient(Message.RecipientType.TO,new InternetAddress("收件人邮箱"));
        message.setSubject("什么都有的邮件");       //设置邮件标题
        //准备邮箱数据
        //准备图片数据
        MimeBodyPart image = new MimeBodyPart();
        DataHandler dh = new DataHandler(new FileDataSource("src/resources/第一天.png"));       //对图片进行数据处理
        image.setDataHandler(dh);       //在Body中放入这个处理的图片数据
        image.setContentID("1.png");       //给图片设置一个id,方便后面使用
        //准备正文数据
        MimeBodyPart text = new MimeBodyPart();
        text.setContent("这是一个封邮件正文带图片<img src='cid:1.png'>的邮件","text/html;charset=utf-8");
        //准备附件数据
        MimeBodyPart file = new MimeBodyPart();
        DataHandler ddh = new DataHandler(new FileDataSource("src/resources/1.txt"));
        file.setDataHandler(ddh);
        file.setFileName("1.txt");       //给附件设置一个名字,方便后面使用
        //描述数据关系
        MimeMultipart mimeMultipart = new MimeMultipart();
        mimeMultipart.addBodyPart(text);
        mimeMultipart.addBodyPart(image);
        mimeMultipart.setSubType("related");
        MimeBodyPart content = new MimeBodyPart();
        content.setContent(mimeMultipart);
        MimeMultipart mimeMultipart1 = new MimeMultipart();
        mimeMultipart1.addBodyPart(file);
        mimeMultipart1.addBodyPart(content);
        mimeMultipart1.setSubType("mixed");
        //设置到消息中,保存修改
        message.setContent(mimeMultipart1);       //把最后编辑好的邮件放入消息当中
        message.saveChanges();       //保存修改
        //5.发送邮件
        transport.sendMessage(message,message.getAllRecipients());
        //6.关闭连接
        transport.close();
    }
}
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-23 16:03:14  更:2021-12-23 16:03:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 7:35:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码