SMTP协议发送邮件

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情
网上找了一个smtp邮箱的发送工具类,还行,用我自己的qq测试可以发送

package com.example

import javax.mail.Address;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import java.util.Date;
import java.util.Properties;
/**
 * SMTP协议发送邮件
 * @author peter
 *
 */
public class SendSmtpMail {
    // 发件人的 邮箱 和 密码(替换为自己的邮箱和密码)
    // PS: 某些邮箱服务器为了增加邮箱本身密码的安全性,给 SMTP 客户端设置了独立密码(有的邮箱称为“授权码”),
    //   对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。
    public static String myEmailAccount = "xxxxxx@qq.com";
    public static String myEmailPassword = "xxxxxxxxx";

    // 发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com
    // 网易163邮箱的 SMTP 服务器地址为: smtp.163.com
    public static String myEmailSMTPHost = "smtp.qq.com";

    // 收件人邮箱(替换为自己知道的有效邮箱)
//    public static String receiveMailAccount = "@com.cn";
//调用方法
    public static void main(String[] args) {
        try {
            SendSmtpMail.sendEmail("你好","dsf","xxxxx@qq.com,xxxx@qq.com");
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public static void sendEmail(String subject,String content,String receiveMailAccount) throws Exception {
        // 1. 创建参数配置, 用于连接邮件服务器的参数配置
        Properties props = new Properties();          // 参数配置
        props.setProperty("mail.transport.protocol", "smtp");  // 使用的协议(JavaMail规范要求)
        props.setProperty("mail.smtp.host", myEmailSMTPHost);  // 发件人的邮箱的 SMTP 服务器地址
        props.setProperty("mail.smtp.auth", "true");      // 需要请求认证

        // PS: 某些邮箱服务器要求 SMTP 连接需要使用 SSL 安全认证 (为了提高安全性, 邮箱支持SSL连接, 也可以自己开启),
        //   如果无法连接邮件服务器, 仔细查看控制台打印的 log, 如果有有类似 “连接失败, 要求 SSL 安全连接” 等错误,
        //   打开下面 /* ... */ 之间的注释代码, 开启 SSL 安全连接。
    /*
    // SMTP 服务器的端口 (非 SSL 连接的端口一般默认为 25, 可以不添加, 如果开启了 SSL 连接,
    //         需要改为对应邮箱的 SMTP 服务器的端口, 具体可查看对应邮箱服务的帮助,
    //         QQ邮箱的SMTP(SLL)端口为465或587, 其他邮箱自行去查看)
    final String smtpPort = "465";
    props.setProperty("mail.smtp.port", smtpPort);
    props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.setProperty("mail.smtp.socketFactory.fallback", "false");
    props.setProperty("mail.smtp.socketFactory.port", smtpPort);
    */
        final String smtpPort = "465";//QQ邮箱端口号
        props.setProperty("mail.smtp.port", smtpPort);
        props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.setProperty("mail.smtp.socketFactory.fallback", "false");
//        props.setProperty("mail.smtp.ssl.enable", "true");
        props.setProperty("mail.smtp.socketFactory.port", smtpPort);
//        props.setProperty("mail.smtp.starttls.enable", "true");
//        props.setProperty("mail.smtp.connectiontimeout", "60000");
//        props.setProperty("mail.smtp.timeout", "60000");
        // 2. 根据配置创建会话对象, 用于和邮件服务器交互
        Session session = Session.getDefaultInstance(props);
        session.setDebug(true);                 // 设置为debug模式, 可以查看详细的发送 log

        // 3. 创建一封邮件
        MimeMessage message = createMimeMessage(session, myEmailAccount, receiveMailAccount,subject,content);

        // 4. 根据 Session 获取邮件传输对象
        Transport transport = session.getTransport();

        // 5. 使用 邮箱账号 和 密码 连接邮件服务器, 这里认证的邮箱必须与 message 中的发件人邮箱一致, 否则报错
        //
        //  PS_01: 成败的判断关键在此一句, 如果连接服务器失败, 都会在控制台输出相应失败原因的 log,
        //      仔细查看失败原因, 有些邮箱服务器会返回错误码或查看错误类型的链接, 根据给出的错误
        //      类型到对应邮件服务器的帮助网站上查看具体失败原因。
        //
        //  PS_02: 连接失败的原因通常为以下几点, 仔细检查代码:
        //      (1) 邮箱没有开启 SMTP 服务;
        //      (2) 邮箱密码错误, 例如某些邮箱开启了独立密码;
        //      (3) 邮箱服务器要求必须要使用 SSL 安全连接;
        //      (4) 请求过于频繁或其他原因, 被邮件服务器拒绝服务;
        //      (5) 如果以上几点都确定无误, 到邮件服务器网站查找帮助。
        //
        //  PS_03: 仔细看log, 认真看log, 看懂log, 错误原因都在log已说明。
        transport.connect(myEmailAccount, myEmailPassword);

        // 6. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
        transport.sendMessage(message, message.getAllRecipients());

        // 7. 关闭连接
        transport.close();
    }
    public static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail,String subject,String content) throws Exception {
        // 1. 创建一封邮件
        MimeMessage message = new MimeMessage(session);

        // 2. From: 发件人(昵称有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改昵称)
        message.setFrom(new InternetAddress(sendMail, sendMail, "UTF-8"));

        // 3. To: 收件人(可以增加多个TO 收件人、Cc 抄送、Bcc 密送)(多个邮箱逗号隔开)
//        message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "zzz", "UTF-8"));
        Address[] internetAddressTo = new InternetAddress().parse(receiveMail);
        message.setRecipients(MimeMessage.RecipientType.TO, internetAddressTo);
        // 4. Subject: 邮件主题(标题有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改标题)
        message.setSubject(subject, "UTF-8");

        // 5. Content: 邮件正文(可以使用html标签)(内容有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改发送内容)
        message.setContent(content, "text/html;charset=UTF-8");

        // 6. 设置发件时间
        message.setSentDate(new Date());

        // 7. 保存设置
        message.saveChanges();

        return message;
    }
}
JAVA利用网易邮箱smtp服务发送邮件(使用465和25端口) 一、用465端口进行发送 <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.1</version> </dependency> MailUtil.ja... 阅读详情

相关推荐

阿里云企业邮箱基于Spring Boot快速实现发送邮件功能

邮件在项目中经常会被用到,比如用邮件发送通知。比如,通过邮件注册、认证、找回密码、系统报警通知、报表信息等。本篇文章带大家通过SpringBoot快速实现一个发送邮件的功能。

robinson_911的专栏 2737

Java Mail发送邮件

①pom依赖 <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.5.2</version> </dependency> ②代码实现 @Ov...

zhangxing 896

使用smtp协议发送邮件

1 打开权限 打开邮箱的POP3/SMTP权限,发送和接收的邮箱都要打开,否则邮件无法发送成功。 注意!打开权限时,邮箱会提供/要求你设置权限码,此权限码即是下面通信时需要用到的密码,而非登录邮箱的密码。 我使用qq邮箱给126邮箱发邮件,所以将两个邮箱的权限都打开了: 2 登录邮箱 打开终端,输入: telnet smtp.qq.com 25 其中smtp.qq.com为服务器,25为...

qq_39972217的博客 5912

【Rust发邮件】Rust如何通过smtp协议发送邮件

在现代软件开发中,邮件发送功能是许多应用程序不可或缺的一部分。无论是用户注册验证、密码重置、通知提醒还是营销推广,邮件服务都扮演着重要角色。Rust作为一门系统级编程语言,以其安全性、并发性和高性能著称,同样可以用于实现邮件发送功能。 lettre 是 Rust 社区维护的一个成熟邮件发送库,支持多种 SMTP 模式、身份验证、HTML 邮件等。

景天科技苑 4万+

JAVA MAIL 发送邮件(一)

本篇文章记录小Z在学习使用JAVA Mail API发送邮件的代码过程      首先,小Z的需求是希望发送一封邮件到自己的QQ邮箱中,当然还是通俗易懂的Hello World。      需要开启QQ邮箱中的设置,开启POP3/SMTP服务 要求根据发送短信到腾讯科技,配置邮件客户端,随后您会获得授权码,该授权码用于之后的代码配置。      进行代码编写,新建一个MAVEN项目,需要下

小Z的部落格 1202

Spring Boot发送邮件的功能实现

发送邮件用到了Spring Email的技术 来先简单介绍一下该技术 首先进行配置文件,配置文件的目的是告诉Spring需要用哪个邮箱来发送邮件 spring: mail: host: smtp.qq.com port: 465 username: ***@qq.com password: *** protocol: smtps properties: mail.smtp.auth: true mail.smtp.start...

woyaottk的博客 980

SMTP协议解读以及如何使用SMTP协议发送电子邮件

电子邮件协议中POP3协议用于接收邮件SMTP协议用于发送邮件SMTP的全称为Simple Mail Transfer Protocol,也就是简单邮件传输协议,字如其名。   相较于POP3而言,SMTP确实比较简单。这里的简单并不是指SMTP的命令比POP3少,而是指SMTP的命令是有序的,而POP3的命令是无序的,理解这一点很重要。也就是说SMTP的命令是要组合在一起才能完成一次邮件发送任务,单独调用每个命令的意义不大。POP3命令则不同,LIST、STAT、UIDL、TOP、RETR、

lgsoftlee的博客 1万+

使用SMTP协议发送邮件

    最近在看《计算机网络》,在学习email邮件发送协议时,学到了一个叫SMTP协议,该协议是为了发送email邮件而涉及的一个协议,普通window用户,利用系统已经安装好的telnet,然后在cmd中使用telnet命令和SMTP协议命令即可实现发送邮件的基本功能;    第一步.注册sohu邮箱,并在其设置中打开pop3/smtp服务                第二步:注册QQ邮箱...

肉松君的博客 1万+

python实现smtp协议发送邮件

协议简介: SMTP协议(simple mail transfer protocol) 简单邮件传输协议 定义了邮件客户端与SMTP服务器之间、两台SMTP服务器之间的通信规则 分为标准SMTP协议和扩展SMTP协议。扩展SMTP协议在标准SMTP协议上增加了邮件安全的认证 通信双方采用一问一答的命令/响应模式 底层基于TCP/IP的应用层协议、默认网络监听号25 直接由自己搭建的邮件服务器发送,我这里ubuntu正在配置 smtplocalhost.py # -*- coding: utf-8 -*-

zjmy的博客 2912

Python SMTP协议发送邮件

几乎所有编程语言都支持发送和接收电子邮件,Python也不例外。本节我们将学习使用Python来发送邮件。 一、电子邮件发送流程 假设我们自己的电子邮件地址是xxx@163.com,对方的电子邮件地址是xxx@qq.com,现在我们用邮件客户端软件(如Outlook或者Foxmail)写好邮件,填上对方Email地址,点击“发送”,电子邮件发送出去了。 ...

xjtuse123的博客 1433

深入SMTP协议:构建邮件发送程序

简单邮件传输协议SMTP)是用于发送电子邮件的互联网标准。它定义了如何将电子邮件发送方的邮件服务器传输到接收方的邮件服务器。SMTP是一种请求响应协议,它基于文本命令并以特定的状态代码响应。SMTP服务器使用端口25、465或587进行通信。SMTP协议允许用户在不需要与邮件服务器交互的情况下发送邮件。它遵循客户端-服务器模型,其中邮件客户端(如Outlook或Thunderbird)作为SMTP客户端,邮件服务器作为SMTP服务器。

weixin_32306683的博客 987

邮件发送协议 SMTP 问题排查

原文地址 微信公众号 项目中需要用到 smtp 协议发送邮件告警,后端的技术栈主要是 Java 和 C++,Java 项目里直接在网上找的现成的类完美实现,163 邮箱,腾讯邮箱和阿里邮箱均测试通过,不幸的是 C++ 的项目也需要使用 smtp 协议发送邮件,惯例先度娘,CSDN 逛了一圈,例程也不少但是每个下边留言都有这样和那样的问题,copy 过来直接运行,163 邮箱完美测试通过,我们用的钉钉全家桶,测试钉钉邮箱时发现不能发送邮件,认证都有问题。好吧,还是先老老实实的学习遍 SMTP 协议.

嘻哈熊的专栏 2382

smtp协议 VC实现发送邮件

由于工作需要,查阅了相关资料,利用VC2005实现了邮件发送,源程序如下://-------------------------------------------------------SmtpSendEmail.h------------------------------------#pragma once#include #include #include #include#

yefeng654321的专栏 4819

C++实现自动发送邮件,基于SMTP协议,支持SSL/TLS

1、SMTP 是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议;2、SMTP 是建立在 TCP上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知;3、SMTP 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持;4、SMTP 重要特性之一是其能跨越网络传输邮件,即“ SMTP 邮件中继”;5、SMTP是一个相对简单的基于文本的协议

shaderdx的专栏 2887

利用Telnet登录qq邮箱发送邮件——SMTP协议学习

最近看《计算机网络》,在应用层学到了一个协议SMTP协议,该协议建立在FTP文件传输服务上,主要用于系统间的Email传输。 明白了其中的原理,下面动手尝试实现一个SMTP交互的实例。 作为win10用户,利用系统已经安装好的telnet,然后在cmd中使用Telnet命令和SMTP协议命令可以实现发送邮件的基本功能。 首先,在“控制面板”中启动Windows的“Telnet Client”功能: ...

qq_45761339的博客 1万+

GO通过SMTP协议发送邮件

SMTP协议是用于发送邮件协议 可以直接使用GO的"net/smtp"包来发送邮件

aiee的博客 887
上一篇: 随机生成颜色代码
下一篇: exchange 发送邮件
Peter_S
博客等级 码龄8年 59粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值