Java通过Jakarta Mail实现邮件发送

问题描述

需要实现邮件发送的功能,对过程进行一下记录。

步骤

① 首先需要开启邮箱的smtp服务,现在很多邮箱默认关闭smtp,pop3,imap服务,需要登录邮箱后在设置中手动开启。

② 引入Jakarta Mail依赖包

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

③ 邮件信息对象

package com.changkong.util.email;

import com.sun.mail.util.MailSSLSocketFactory;
import java.security.GeneralSecurityException;
import java.util.List;
import java.util.Properties;
import lombok.Data;

@Data
public class MailSenderInfo {
    // 发送邮件的服务器的IP和端口
    private String mailServerHost;
    private String mailServerPort = "465";
    private boolean enableSSL;
    private boolean enableTLS;
    // 邮件发送者的地址
    private String fromAddress;
    // 邮件接收者的地址
    private List<String> toAddressList;
    // 登陆邮件发送服务器的用户名和密码
    private String userName;
    private String password;
    // 是否需要身份验证
    private boolean validate = false;
    // 邮件主题
    private String subject;
    // 邮件的文本内容
    private String content;
    // 邮件附件的文件名
    private List<String> attachFileNames;

    /**
     * 获得邮件会话属性
     */
    public Properties getProperties() throws GeneralSecurityException {
        Properties p = new Properties();
        p.put("mail.smtp.host", this.mailServerHost);
        p.put("mail.smtp.port", this.mailServerPort);
        if (this.enableSSL) {
            MailSSLSocketFactory sf = null;
            sf = new MailSSLSocketFactory();
            // 设置信任所有的主机
            sf.s
Jakarta Mail API中,如果你想要发送电子邮件并包含附件,可以使用`MimeBodyPart`和`Multipart`类来构建邮件内容。以下是一个简单的步骤概述: 1. 导入必要的库: ```java import javax.mail.*; import javax.mail.internet.*; import java.io.File; ``` 2. 创建一个`Mimemultipart`对象作为邮件主体,它可以包含多个部分(如文本、HTML、附件等): ```java Multipart multipart = new MimeMultipart(); ``` 3. 添加一个`MimeBodyPart`来表示文本消息或HTML内容: ```java BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText("这是你的邮件正文..."); multipart.addBodyPart(messageBodyPart); ``` 4. 如果有附件,创建一个新的`FileDataSource`来引用文件,并添加到`MimeBodyPart`中: ```java File file = new File("path_to_your_attachment"); DataSource source = new FileDataSource(file); MimeBodyPart attachment = new MimeBodyPart(); attachment.setDataHandler(new DataHandler(source)); attachment.setFileName(file.getName()); // 设置附件名 multipart.addBodyPart(attachment); ``` 5. 组装邮件头信息: ```java MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress(fromEmail)); msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toEmail)); msg.setSubject(subject); msg.setContent(multipart); ``` 6. 使用SMTP服务器发送邮件: ```java Transport.send(msg); ``` 记得替换上述代码中的变量(`fromEmail`, `toEmail`, `subject`, `file路径`),并配置正确的`Session`实例(包括SMTP服务器信息)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值