tp5邮箱POP3发送邮件验证码放到服务器上就不能用了为什么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tp5邮箱POP3发送邮件验证码放到服务器上就不能用了为什么相关的知识,希望对你有一定的参考价值。

本地上用的可以发,放到阿里云服务器上点发送验证码按钮,他显示进入倒计时了,但是没有邮件发到指定邮箱……

一、开启SMTP服务(使用php发送邮件需要用到SMTP服务,这里以163邮箱的SMTP服务为例)
1.登录163邮箱,在首页上找到“设置”。
2.选择开启的服务,一般都全选,POP3/SMTP/IMAP,开启SMTP服务就得先开通客户授权码。
3.点击开通客户授权码,选择开启
4.需要手机验证码,需要绑定手机号。
5.SMTP服务需要输入客户端授权密码,这个密码就是是你在第三方客户端上的邮箱登录密码(在后面使用phpmailer发送邮件时会用到),如果在第三方客户端上输入之前的邮箱登录密码就会出错。
6.设置完客户端授权密码后就成功开通了SMTP服务
二、首先下载phpmailer压缩包
在thinkphp5的项目中的extend目录下新建一个mailer文件夹,然后把phpmailer.php 和smtp.php文件复制到目录下
phpmailer.php 中在顶部修改命名空间为
namespace mailer;
添加
use think\Exception;
smtp.php中修改命名空间为
namespace mailer;
参考技术A 发送邮件使用的是smtp服务
pop是用来接收邮件的
所以tp5设置开启smtp外发
网页端使用mail插件调研smtp服务器
必须使用认证模式,否则发送会失败
网页也需要记录返回日志,方便问题的查询

关于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协议的

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

 

以上是关于tp5邮箱POP3发送邮件验证码放到服务器上就不能用了为什么的主要内容,如果未能解决你的问题,请参考以下文章

java实现邮件发送验证码

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

SpringBoot实现发送邮件

在spring中使用邮箱验证

邮箱验证

JavaWeb--简单邮件发送实现