基于JavaMail的Java邮件发送:简单快速上手

简介: 基于JavaMail的Java邮件发送:简单快速上手

1.什么事JavaMail

JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

2.JavaMail的协议

  • 邮件开发的相关协议
  • SMTP:SMTP 发送协议 默认端口:25 使用SSL 端口改为465
  • POP:POP这个版本用的最多 接收协议 默认端口:110

3.邮件发送接受的过程分析

image.png

4.邮件开发的准备工作

4.1申请邮箱开通SMPT服务

这里使用网易云邮箱 进入后开通SMPT服务

image.png

点击开启SMTP服务 扫码发送短信开通 填写你所使用的设备 记住授权码 后面要使用 这很重要

image.png

4.2引入JavaMail

在pom.xml中添加如下依赖

        <!-- Javamail -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.4</version>
        </dependency>

为了让Spring与JavaMail集成 还需要在pom.xml中引入如下依赖

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-suppport</artifactId>
            <version>${spring.version}</version>
        </dependency>

如果是web项目 引入如下jar包

image.png

5.传统的邮件开发

8e7cec1bd46e4bf097ef21d7d344ab7a.png

6.邮件发送工具类抽取

package com.czxy.utils;
import javax.mail.Address;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import java.util.Properties;
/**
 * 邮件发送的工具类
 * @author Administrator
 */
public class MailUtil {
  /**
   * 发送邮件
   * @param to      收件人
   * @param subject   主题
   * @param content   内容
   * @throws Exception
   */
  public static void sendMsg(String to ,String subject ,String content) throws Exception{
    // 创建属性文件
    Properties props = new Properties();
    // 设置主机地址   smtp.qq.com    smtp.sina.com  使用的本地易邮服务器
    props.setProperty("mail.smtp.host", "smtp.163.com");
    // 认证,提供用户名和密码进行校验
    props.setProperty("mail.smtp.auth", "true");
    //2.产生一个用于邮件发送的Session对象,连接服务器主机
    Session session = Session.getInstance(props);
    //3.产生一个邮件的消息对象
    MimeMessage message = new MimeMessage(session);
    //4.设置消息的发送者
    Address fromAddr = new InternetAddress("发件人的邮箱账号");
    message.setFrom(fromAddr);
    //5.设置消息的接收者
    Address toAddr = new InternetAddress(to);
    //TO 直接发送  CC抄送    BCC密送
    message.setRecipient(RecipientType.TO, toAddr);
    //6.设置主题
    message.setSubject(subject);
    //7.设置正文
    message.setText(content);
    //8.准备发送,得到火箭
    Transport transport = session.getTransport("smtp");
    //9.设置火箭的发射目标 
    /**
     * 1. 主机地址
     * 2. 发件人的邮箱帐号
     * 3. 账号对应的密码
     */
    transport.connect("smtp.163.com", "发送人的邮箱账号", "前面保存的授权码");
    //10.发送
    transport.sendMessage(message, message.getAllRecipients());
    //11.关闭
    transport.close();
  }
}


相关文章
|
1月前
|
Java
使用java底层实现邮件的发送(含测试,源码)
使用java底层实现邮件的发送(含测试,源码)
|
2天前
|
Java 机器人 程序员
如何在Java中实现邮件发送功能?
如何在Java中实现邮件发送功能?
|
21天前
|
前端开发 Java 网络安全
基于Java Socket实现的SMTP邮件客户端 - 全面支持SSL, TLS
基于Java Socket实现的SMTP邮件客户端 - 全面支持SSL, TLS
20 0
|
28天前
|
Java 网络安全 API
Java一分钟之-JavaMail:发送电子邮件
本文介绍了使用JavaMail API发送电子邮件的步骤,包括环境准备、依赖引入、基本配置和代码示例。通过添加Maven或Gradle依赖,设置SMTP服务器信息并实现Authenticator,可以创建和发送邮件。同时,文章列举了SMTP认证失败、连接超时等常见问题及其解决方案,并提出了安全与最佳实践建议,如启用SSL/TLS、避免硬编码密码和妥善处理异常。
84 0
|
1月前
|
Java API 数据安全/隐私保护
【亮剑】如何在Java项目中结合Spring框架实现邮件发送功能
【4月更文挑战第30天】本文介绍了如何在Java项目中结合Spring框架实现邮件发送功能。首先,需在`pom.xml`添加Spring和JavaMail依赖。然后,在`applicationContext.xml`配置邮件发送器,包括SMTP服务器信息。接着,创建一个使用依赖注入的`EmailService`类,通过`JavaMailSender`发送邮件。最后,调用`EmailService`的`sendSimpleEmail`方法即可发送邮件。最佳实践包括:使用配置管理敏感信息,利用`MimeMessage`构造复杂邮件,异常处理和日志记录,以及在大量发送时考虑使用邮件队列。
|
1月前
|
Java 数据安全/隐私保护 Windows
java实现邮件发送准备工作(前期配置)
java实现邮件发送准备工作(前期配置)
|
8月前
|
Java 数据安全/隐私保护
【Java用法】java使用javax.mail读取邮箱,SpringBoot javax.mail获取邮件内容,根据时间段筛选邮件,内附代码,拿来即用
【Java用法】java使用javax.mail读取邮箱,SpringBoot javax.mail获取邮件内容,根据时间段筛选邮件,内附代码,拿来即用
175 0
|
8月前
|
Java
【Java】SpringBoot邮件发送实现
这里我用的是网易免费企业邮箱。参数请不要照抄,改成适合自己的。
117 0
|
11月前
|
Java
java邮件提醒实现
最近做项目的时候,有这样一个需求,因为项目中的流程是分级流转审批的过程,所以当前人操作完成之后,需要程序的一个固定邮箱通过邮件通知下级相应人员进行处理,所以也就有了小编今天的这篇博文。
使用java底层实现邮件的发送(含测试,源码)
直接上代码:3个类,两个主要的类,一个测试类: 主类(Mail):