邮件发送 --- 纯Java、JavaWeb、Spring三种实现方式

这篇博客详细介绍了邮件发送的原理,包括SMTP和POP3协议,以及邮件发送的准备工作,如JavaMail API和JavaActivation Framework。接着,作者通过实例演示了如何使用纯Java、JavaWeb以及Spring框架发送邮件,特别提到了JavaWeb发送邮件时的多线程优化,以及Spring项目的邮件发送配置和测试。最后,作者鼓励读者继续学习和实践。
摘要由CSDN通过智能技术生成

邮件发送学习笔记~


一、邮件发送介绍在这里插入图片描述

  • 要在网络上实现邮件功能,必须要有专门的邮件服务器!

  • 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中!

  • 传输协议

    • SMTP协议:发送邮件
      • 把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)
    • POP3:接收邮件
      • 把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)
  • 邮件发送准备工作:

    • JavaMail API
    • JavaActivation Framework
    • mail.jar(maven仓库下载即可)
    • activation.jar(maven仓库下载即可)
  • 主要有四个核心类:
    在这里插入图片描述


二、正戏开始

1、在空项目下新建模块(mail-java),下面建个lib目录,把两个jar包拉进去,Add as Library

2、登录qq邮箱,进入设置–>帐户–>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

在这里插入图片描述
在这里插入图片描述


1、简单邮件发送

package com.xiao;

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 MailDemo01 {
   
    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.enable","true");
        prop.put("mail.smtp.ssl.socketFactory",sf);

        //5个步骤
        //1、创建定义整个应用程序所需的环境信息的Session信息
        //下面这个QQ才有!!
        Session session = Session.getDefaultInstance(prop, new Authenticator() {
   
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
   
                return new PasswordAuthentication("2675295641@qq.com", "授权码");
            }
        });

        //开启Session的debug模式,可以看到程序发送Email的运行状态
        session.setDebug(true);

        //2、通过Session得到transport对象
        Transport ts = session.getTransport();

        //3、使用邮箱的用户名和授权码  连接邮件服务器
        ts.connect("smtp.qq.com","2675295641@qq.com","授权码");

        //4、创建邮件:写邮件(需要传递Session)
        MimeMessage message = new MimeMessage(session);

        message.setFrom(new InternetAddress("2675295641@qq.com")); //发件人
        message.setRecipient(Message.RecipientType.TO,new InternetAddress("15007590860@163.com")); //收件人
        message.setSubject("只包含文本的简单邮件");  //邮件主题
        message.setContent("<h1 style='color:red'>你好啊!</h1>","text/html;charset=UTF-8");

        //5、发送邮件
        ts.sendMessage(message,message.getAllRecipients());

        //关闭
        ts.close();
    }
}

2、带图片+附件–邮件发送

在这里插入图片描述
在这里插入图片描述

package com.xiao;

import com.sun.mail.util.MailSSLSocketFactory;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值