雜項之使用qq郵箱發送郵件

雜項之使用qq郵箱發送郵件

本節內容

  1. 特殊設置
  2. 測試代碼

1. 特殊設置

以前QQ郵箱直接能夠經過smtp協議發送郵件,不須要進行一些特殊的設置,可是最近使用QQ郵箱測試的時候發現之前使用的辦法沒法奏效了。。。因而上網查了查,QQ對這方面作了一些限制,必須使用受權碼才能登錄郵箱。官方連接在這:
http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
按照上面的官方文檔配置好以後就可使用QQ郵箱發送郵件了,下面是使用方法。python

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="123456789@qq.com # 這裏填的是你的發件箱的郵箱名",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("987654321@qq.com")
相關文章
相關標籤/搜索