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

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

本节内容

  1. 特殊设置
  2. 测试代码

1. 特殊设置

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

2. 测试代码

#!/usr/bin/env python
# encoding:utf-8
# __author__: send_email
# date: 2016/12/19 11:50
# blog: http://huxianglin.cnblogs.com/ http://xianglinhu.blog.51cto.com/

from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL
import random

class Send_email:
    def __init__(self,mail_host="smtp.qq.com",mail_user="[email protected]  # 这里填的是你的发件箱的邮箱名",mail_pass="这里填的不是邮箱密码,而是开启服务后的16位授权码"):
        self.mail_host=mail_host
        self.mail_user=mail_user
        self.mail_pass=mail_pass

    def send_mail(self,email):
        random_str="".join([str(random.randint(0,9)) for i in range(6)])  # 生成6位的0-9的随机数字,并转换成字符串
        mailInfo = {
                "from":self.mail_user,         #"发信人用户名@qq.com",
                "to": email,                   #"收信人用户名@qq.com",
                "hostname":"smtp.qq.com",      #qq的smtp服务器
                "username":self.mail_user,     #"账户名",
                "password":self.mail_pass,     #"密码",
                "mailsubject":"注册验证码",     #"邮件标题",
                "mailtext":random_str,
                "mailencoding":"utf-8"
                        }

        msg=MIMEText(mailInfo["mailtext"])  # 里面放需要发送的内容  #,"text",mailInfo["mailencoding"]  # 这些加上无法收到验证码
        msg[‘Subject‘]=Header(mailInfo["mailsubject"],mailInfo["mailencoding"])  # 邮件标题内容
        msg["from"] = mailInfo["from"]  # 发件人
        msg["to"] = mailInfo["to"]  # 收件人
        # server = smtplib.SMTP(self.mail_host, 25) # 这一行是以前的QQ邮箱可以直接使用smtp发送邮件
        server = SMTP_SSL(mailInfo["hostname"])  # 现在的QQ邮箱必须要SSL支持才能发送邮箱,并且不能填邮箱密码,需要在邮箱设置中打开支持POP3/SMTP功能,并获取到16位的授权码
        server.set_debuglevel(1)  # 设置debug等级 如果不想看详细日志,可以把日志级别调高一点,不需要看日志的话把这行删除就行
        server.ehlo(mailInfo["hostname"])  # 设置smtp邮箱服务器地址
        server.login(self.mail_user, self.mail_pass)  # 通过用户名和设置的授权码登录
        server.sendmail(mailInfo["from"], mailInfo["to"], msg.as_string())  # 将打包的信息发送给对方,可以将对方地址设置成一个列表或元祖,相当于群发邮件
        server.quit()  # 退出发送邮件

if __name__ == "__main__":
    obj=Send_email()
    obj.send_mail("[email protected]")
时间: 2024-10-13 16:19:03

杂项之使用qq邮箱发送邮件的相关文章

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

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

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

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

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

PHP 利用 QQ 邮箱发送邮件「PHPMailer」

在 PHP 应用开发中,往往需要验证用户邮箱.发送消息通知,而使用 PHP 内置的 mail() 函数,则需要邮件系统的支持. 如果熟悉 IMAP/SMTP 协议,结合 Socket 功能就可以编写邮件发送程序了,不过开发这样一个程序并不容易. 好在 PHPMailer 封装的足够强大,使用它可以更加便捷的发送邮件,免去了我们很多额外的麻烦. PHPMailer PHPMailer 是一个封装好的 PHP 邮件发送类,支持发送 HTML 内容的电子邮件,以及可以添加附件发送,并不像 PHP 本身

JAVA 使用qq邮箱发送邮件

引入一个架包: 代码如下: private static final String QQ_EMAIL_HOST="smtp.qq.com";//qq SMTP服务器 地址 private static final String QQ_EMAIL_PORT="587";//qq SMTP服务器 端口(465这个端口有问题) private static final String QQ_EMAIL_FROM="[email protected]";/

.Net调用QQ邮箱发送邮件

话说网上发送邮件的代码很多,但是我由于不细心,导致拿别人的代码发送邮件老是失败,今天就说说几个要注意的地方吧!!! public bool SendEmail() { MailMessage msg = new MailMessage(); msg.To.Add("[email protected]");//收件人地址 msg.CC.Add("[email protected]");//抄送人地址 msg.From = new MailAddress("[

asp.net使用qq邮箱发送邮件

using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Mail; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication1 { public partial class Cemail : System.Web.U

asp.net——QQ邮箱发送邮件

1.获取QQ邮箱的授权码 打开QQ邮箱 - 设置 - 账户 - 开启POP3/SMTP服务 -> 根据操作获取授权码 2.设置并发送邮件--方法1 (两种配置方式) -1:配置Web.config,在<configuration>标签中添加以下代码 (aaaaaaaaaa:表示你发信人的邮箱号. bbbbbbbbbb:表示你前面获取的授权码. 端口号port:我测试25能发,而465不能发(不知道为什么).) <system.net> <mailSettings>