#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Created by susecjh on 2017/10/23
from re import match
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr, formataddr
# 封裝qq郵箱,gmail郵箱,163郵箱的發(fā)送
class EmailPost(object):
def __init__(self, tp, from_addr, password):
"""
:param type: 你發(fā)送郵箱的方式,可選內(nèi)容為:qq,QQ,gmail,163
:param from_addr: 你的郵箱賬號(hào)
:param password: 你的郵箱密碼,其中qq方式的發(fā)送password為授權(quán)碼
"""
if not isinstance(tp, str):
raise ValueError('type is not a str, please input "qq","QQ","gmail","163"!')
if tp == 'qq' or tp == 'QQ':
if match(r'^\w+@qq.com$', from_addr) is None:
raise ValueError('The email, %s , is not a %s email' % (from_addr, tp))
if tp == 'gmail':
if match(r'^\w+@gmail.com$', from_addr) is None:
raise ValueError('The email, %s , is not a %s email' % (from_addr, tp))
if tp == '163':
if match(r'^\w+@163.cn$', from_addr) is None:
raise ValueError('The email, %s , is not a %s email' % (from_addr, tp))
self.__type = tp
self.__from_addr = from_addr
self.__password = password
self.open()
def open(self):
"""
:param type: 郵箱類型
:return: 返回一個(gè)SMTP_SSL對(duì)象
"""
if self.__type == 'qq' or self.__type == 'QQ':
self.__server = self.open_qq()
if self.__type == 'gmail':
self.__server = self.open_gmail()
if self.__type == '163':
self.__server = self.open_163()
self.__server.login(self.__from_addr, self.__password)
def open_qq(self):
return smtplib.SMTP_SSL('smtp.qq.com', 465)
def open_gmail(self):
return smtplib.SMTP_SSL('smtp.gmail.com', 587)
def open_163(self):
return smtplib.SMTP_SSL('smtp.163.com', 465)
def post(self, to_addr, msg, subject, subtype='plain', **kwargs):
"""
msg:你想要發(fā)送的內(nèi)容,可以是html的方式
subject----主題
kwargs:
subtype:發(fā)送內(nèi)容的格式----
'plain'---發(fā)送的文本內(nèi)容,是默認(rèn)值
'html'----發(fā)送html方式
'all'----用時(shí)支持以上兩種方式
html_msg----'all' 存在時(shí)生效,存儲(chǔ)html方式的內(nèi)容
from_name----發(fā)送人昵稱
to_name----接受人昵稱
file_path-----附加文件地址
"""
if subtype != 'plain' and subtype != 'html' and subtype != 'all':
raise ValueError('The subtype is %s ,please input "plain" , "html" or "all".' % subtype)
# 設(shè)置message內(nèi)容
message = MIMEText(msg, subtype, 'utf-8')
message['From'] = _format_addr('%s<%s>' % (self.__from_addr, kwargs.get('from_addr', 'susecjh')))
message['To'] = _format_addr('%s<%s>' % (to_addr, kwargs.get('to_addr', '用戶')))
message['Subject'] = Header(subject, 'utf-8').encode()
self.__server.set_debuglevel(1)
self.__server.sendmail(from_addr=self.__from_addr, to_addrs=to_addr, msg=message.as_string())
def __del__(self):
self.__server.quit()
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
python 發(fā)送email 郵箱
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 引入smtplib和email.mime.text.MIMEText兩個(gè)庫(kù)可以完成發(fā)送郵件的功能代碼邏輯順序:初始...
- 前言 在進(jìn)行日常的自動(dòng)化測(cè)試實(shí)踐中,我們總是需要將測(cè)試過(guò)程中的記錄、結(jié)果等等等相關(guān)信息通過(guò)自動(dòng)的手段發(fā)送給相關(guān)人員...
- 下面的文件打開沒有使用with語(yǔ)句,是不規(guī)范的。實(shí)測(cè)可用。給出的鏈接是在學(xué)習(xí)過(guò)程中用到的有用的鏈接,代碼是根據(jù)這些...
- 原理 網(wǎng)上已經(jīng)有了很多的教程講解相關(guān)的發(fā)送郵件的原理,在這里還是推薦一下廖雪峰老師的Python教程,講解通俗易懂...
- (看了數(shù)個(gè)視頻,中有“經(jīng)典之后再無(wú)經(jīng)典,紅磡搖滾演唱會(huì)之竇唯”) 隨意,毫無(wú)張狂地走動(dòng)。 沼澤草地中水仙一般的存在...