qq邮箱发送

简介: qq邮箱发送

宁鸣而死,不默而生。——胡适

package com.ruben.utils; 
/**
 * @ClassName: SendEmail
 * @Date: 2020/11/7 0007 19:36
 * @Description:
 */
import com.ruben.pojo.EmailDataTransferObject;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
/**
 * @ClassName: SendEmail
 * @Description: 我还没有写描述
 * @Date: 2020/11/7 0007 19:36
 * *
 * @author: <achao1441470436@gmail.com>
 * @version: 1.0
 * @since: JDK 1.8
 */
public class SendEmail {
    public static void sendEmail(EmailDataTransferObject emailDataTransferObject) throws MessagingException {
        //做链接前的准备工作  也就是参数初始化
        Properties properties = new Properties();
        properties.setProperty("mail.smtp.host", "smtp.qq.com");//发送邮箱服务器
        properties.setProperty("mail.smtp.port", "465");//发送端口
        properties.setProperty("mail.smtp.auth", "true");//是否开启权限控制
        properties.setProperty("mail.debug", "true");//true 打印信息到控制台
        properties.setProperty("mail.transport", "smtp");//发送的协议是简单的邮件传输协议
        properties.setProperty("mail.smtp.ssl.enable", "true");
        //建立两点之间的链接
        Session session = Session.getInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(emailDataTransferObject.getSender(), emailDataTransferObject.getCode());
            }
        });
        //创建邮件对象
        Message message = new MimeMessage(session);
        //设置发件人
        try {
            message.setFrom(new InternetAddress(emailDataTransferObject.getSender()));
            //设置收件人
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(emailDataTransferObject.getReceiver()));//收件人
            //设置主题
            message.setSubject(emailDataTransferObject.getTitle());
            //设置邮件正文  第二个参数是邮件发送的类型
            message.setContent(emailDataTransferObject.getContent(), "text/html;charset=UTF-8");
            //发送一封邮件
            Transport transport = session.getTransport();
            transport.connect(emailDataTransferObject.getSender(), emailDataTransferObject.getCode());
            Transport.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        } finally {
        }
    }
}


package com.ruben.pojo;
/**
 * @ClassName: EmailDataTransferObject
 * @Date: 2020/11/7 0007 21:50
 * @Description:
 */
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.Email;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
 * @ClassName: EmailDataTransferObject
 * @Description: 我还没有写描述
 * @Date: 2020/11/7 0007 21:50
 * *
 * @author: <achao1441470436@gmail.com>
 * @version: 1.0
 * @since: JDK 1.8
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EmailDataTransferObject {
    @Email(message = "请输入合法邮箱")
    private String sender;
    @NotBlank(message = "请输入授权码")
    private String code;
    @Email(message = "请输入合法邮箱")
    private String receiver;
    @NotBlank(message = "请输入标题")
    private String title;
    @NotBlank(message = "请输入内容")
    private String content;
    @NotNull(message = "请输入间隔时间(秒)")
    @Min(value = 0, message = "间隔时间不能为负数")
    private Long split;
    @NotNull(message = "请输入发送次数")
    @Min(value = 0, message = "发送次数不能为负数")
    private Long times;
}
相关文章
|
移动开发 监控 测试技术
mPaas常见问题之针对某个机器做强制升级如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
305 0
|
UED 开发者
Flutter|常用数据通信组件
Flutter|常用数据通信组件
239 49
|
缓存 监控 中间件
探究Django中间件的神奇:功能、应用场景和核心方法
在Django中,中间件是一个强大的概念,它们提供了一种灵活的方式来处理请求和响应。本文将探讨Django中间件的基本概念、常见应用场景以及中间件类中的父类和核心方法。
|
存储 JSON 前端开发
massCode 一款优秀的开源代码片段管理器
本文将介绍一款适合程序员使用的个人代码片段管理工具 massCode
2310 0
massCode 一款优秀的开源代码片段管理器
|
JavaScript 前端开发 安全
🎖️typeScrpt中用Interface还是Type?
我们将探讨 TypeScript 中类型和接口之间的关键差异,以及这种理解如何显著影响项目的整体性能和可维护性
177 0
|
XML 前端开发 Java
把对象交给spring管理的3种方法及经典应用
把对象交给spring管理的3种方法及经典应用
|
22天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
32952 130
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API

热门文章

最新文章