关于JavaMail实现QQ邮箱发送邮件的简单实现1

一 确认QQ是否开启了POP3/SMPT协议

1.登陆QQ,打开QQ邮箱,点击“设置”

2.点击“账户”,拉到下面“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”

3.点击“开启”,会看见几种验证方式,选择任意一种觉得方便的方式

4.在验证完之后会得到一个授权码,这个授权码先拷贝下来,等一下会作为系统邮箱的密码,要是授权码忘记了也没有关系,可以再重新生成

二 测试代码

1.在成功开启QQ的POP3/SMTP协议之后,就可以测试发送了

 1 import java.util.Properties;
 2
 3 import javax.mail.Message;
 4 import javax.mail.MessagingException;
 5 import javax.mail.Session;
 6 import javax.mail.Transport;
 7 import javax.mail.internet.AddressException;
 8 import javax.mail.internet.InternetAddress;
 9 import javax.mail.internet.MimeMessage;
10 import javax.mail.internet.MimeMessage.RecipientType;
11
12 public class SendmailUtil {
13     public static void main(String[] args) throws AddressException, MessagingException {
14         Properties properties = new Properties();
15         properties.put("mail.transport.protocol", "smtp"); // 连接协议
16         properties.put("mail.smtp.host", "smtp.qq.com"); // 主机名
17         properties.put("mail.smtp.port", 465);  // 端口号
18         properties.put("mail.smtp.auth", "true");
19         properties.put("mail.smtp.ssl.enable", "true");  // 设置是否使用ssl安全连接 ---一般都使用
20         properties.put("mail.debug", "true"); // 设置是否显示debug信息 true 会在控制台显示相关信息
21         // 得到回话对象
22         Session session = Session.getInstance(properties);
23         // 获取邮件对象
24         Message message = new MimeMessage(session);
25         // 设置发件人邮箱地址
26         message.setFrom(new InternetAddress("发件人邮箱@qq.com"));
27         // 设置收件人地址
28         message.setRecipients( RecipientType.TO, new InternetAddress[] { new InternetAddress("收件人邮箱@qq.com") });
29         // 设置邮件标题
30         message.setSubject("由JavaMail发出的测试邮件");
31         // 设置邮件内容
32         message.setText("内容为: 这是第一封java发送来的邮件。");
33         // 得到邮差对象
34         Transport transport = session.getTransport();
35         // 连接自己的邮箱账户
36         transport.connect("发件人邮箱@qq.com", "授权码");// 密码为刚才得到的授权码
37         // 发送邮件
38         transport.sendMessage(message, message.getAllRecipients());
39     }
40 }

2.在运行代码之后,要是控制台输出为以下内容,则测试成功

DEBUG: JavaMail version 1.4.3
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.qq.com", port 465, isSSL true
220 smtp.qq.com Esmtp QQ Mail Server
DEBUG SMTP: connected to host "smtp.qq.com", port: 465

EHLO DESKTOP-P7GG6RA
250-smtp.qq.com
250-PIPELINING
250-SIZE 73400320
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "SIZE", arg "73400320"
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
DEBUG SMTP: Found extension "AUTH=LOGIN", arg ""
DEBUG SMTP: Found extension "MAILCOMPRESS", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Attempt to authenticate
DEBUG SMTP: check mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM
AUTH LOGIN
334 VXNlcm5hbWU6
NDQ3ODQzMDk4QHFxLmNvbQ==
334 UGFzc3dvcmQ6
bXZ6dHJicHpxeGt5YmllYw==
235 Authentication successful
DEBUG SMTP: use8bit false
MAIL FROM:<发件人@qq.com>
250 Ok
RCPT TO:<收件人@qq.com>
250 Ok
DEBUG SMTP: Verified Addresses
DEBUG SMTP:   收件人@qq.com
DATA
354 End data with <CR><LF>.<CR><LF>
From: 发件人@qq.com
To: 收件人@qq.com
Message-ID: <[email protected]>
Subject: =?GBK?B?08lKYXZhTWFpbLeis/a1xLLiytTTyrz+?=
MIME-Version: 1.0
Content-Type: text/plain; charset=GBK
Content-Transfer-Encoding: base64

xNrI3c6qo7og1eLKx7Xa0ru34mphdmG3osvNwLS1xNPKvP6how==
.
250 Ok: queued as 

3.再去收件人邮箱里面去查看是否收到邮件

三 注意:

  只需要发件人邮箱(也就是自己设定的系统邮箱)开通POP3/SMTP协议,收件人的邮箱是不需要开通POP3/SMTP协议的

  希望整理出来的这些内容对大家有帮助,祝大家每天都开开心心!^-^

时间: 2024-07-30 10:20:35

关于JavaMail实现QQ邮箱发送邮件的简单实现1的相关文章

基于java mail实现简单的QQ邮箱发送邮件

刚学习到java邮件相关的知识,先写下这篇博客,方便以后翻阅学习. -----------------------------第一步 开启SMTP服务 在 QQ 邮箱里的 设置->账户里开启 SMTP 服务 完成验证 获取授权码(后面代码实现时使用) -----------------------------第二步 环境配置 即下载第三方库 https://github.com/javaee/javamail/releases -----------------------------第三步 代

杂项之使用qq邮箱发送邮件

杂项之使用qq邮箱发送邮件 本节内容 特殊设置 测试代码 1. 特殊设置 之前QQ邮箱直接可以通过smtp协议发送邮件,不需要进行一些特殊的设置,但是最近使用QQ邮箱测试的时候发现以前使用的办法无法奏效了...于是上网查了查,QQ对这方面做了一些限制,必须使用授权码才能登陆邮箱.官方链接在这:http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256按照上面的官方文档配置好之后就可以使用QQ邮箱发

qq邮箱发送邮件封装

使用qq发送邮件 # coding=utf8 """ qq邮箱发送邮件 """ import sys reload(sys) sys.setdefaultencoding('utf8') import smtplib from email.mime.text import MIMEText class QQMailClient(): """使用qq邮箱发送邮件""" def __init

SpringBoot使用qq邮箱发送邮件

最近公司要做一个邮箱注册和重置密码的功能,因为之前就做过,但是不是Springboot项目,所以相对来说还是比较容易的,在这里记录一下. 一.引用Maven依赖 这里使用spring自带的邮件jar包 <!-- 邮件服务 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId&g

用JavaMail通过QQ邮箱来发送邮件(第一篇博客,备忘)

1.先启用QQ邮箱里POP3/STMP服务:生成授权码 2.导入mail.jar包(不要用太古董的技术,你懂得) 3.注意要在代码里加上开启SSL加密的代码 4.直接上代码 import java.util.Properties; import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import java

javamail实现用普通QQ邮箱发送邮件

本人最近在写一个Android项目,用户注册的时候想用邮箱验证的方式,于是就需要在服务器端发送电子邮件给新注册用户,邮件内容中包含一个 链接, 当用户点击这个链接将 登录到服务器 的验证逻辑.本人在网上找了很多代码,可能由于是很久以前的了,各大邮箱的规范 什么的都发生改变,所以总是出现一些问题.庆幸 的是,最后还是实现了. 这是我用大号 发给小号 和另外一个 163 邮箱的 测试邮件 首先,发一个连接,我在困扰了了两天之后,终于得到了这位前辈的解救,我发的代码基本上也都是他的源码,只是有几处关键

java基于javaMail实现向QQ邮箱发送邮件

一.首先开启SMTP服务        在 QQ 邮箱里的      设置->账户->开启 SMTP 服务           注意:开启完之后,QQ 邮箱会生成一个授权码,在代码里连接邮箱使用这个授权码而不是原始的邮箱密码,这样可以避免使用明文密码 二.设置spring配置文件 <?xml version="1.0" encoding="UTF-8"?>    <beans xmlns="http://www.springf

javaMail操作QQ邮箱发送邮箱 Demo

最近用到想给项目中加一个功能,就是当项目中某些模块发生异常,在捕获异常后不仅仅写日志抛异常等!还要追加一个发送邮件给该模块的负责人,方便运维定位问题: maven管理的配置: <!-- 邮件 --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </depe

QQ邮箱发送邮件,出现mail from address must be same as authorization user错误

之前做的一个系统,有个发送邮件的功能,一直能正常使用,今天同事说QQ邮箱发送不了. 立马着手调试,发现服务器一直出现“mail from address must be same as authorization user”的错误,网上很多人说是“POP3/SMTP服务”没有开启,登录邮箱查看,发现该服务是开启的. 百思不得其解时,另一个同事说他用另一个QQ邮箱测试,邮件能正常发送,立即进入邮箱对比,发现他的QQ邮箱设置了“独立密码”,联想到抛出的错误提示,顿时大悟,设置独立密码,程序发送邮件时