0x01:由於業務需要用到這個功能,所以順便簡單講下如何使用python實現。
整個流程如下所示:
登錄->寫郵件->發送
下面以使用qq郵箱發送爲例:
首先需要再qq郵箱裏面設置好SMTP這個發件功能以及授權碼。
開啓SMTP發件功能:
進入qq郵箱,點擊賬號->選擇【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務】->開啓對應的SMTP服務。
設置授權碼-16位字符(也就是下面代碼中的password):
然後開始編寫代碼。
1、簡單郵件
import smtplib
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
mail_host =('smtp.qq.com')
port =465
send_by = ('[email protected]')
password = ('lsdyxeimzvnebcbh')
send_to = ('[email protected]')
def send_mail(title,content,):
m=MIMEText(content,'plain','utf-8')
m['From']=send_by
m['To']=send_to
m['Subject']=title
#登錄
try:
smpt=smtplib.SMTP_SSL(mail_host,port,'utf-8')
smpt.login(send_by,password)
smpt.sendmail(send_by,send_to,m.as_string())
print('success!')
except smtplib.SMTPException as e:
print('Error:',e)
2、各種附件的郵件
這裏的話主要是需要區分一下MIME的類型,找到對應的方法,這裏可參考http://www.w3school.com.cn/media/media_mimeref.asp
我這裏就使用懶人方法,除文本,圖片都使用MIMEApplication。
# -*- coding: UTF-8 -*-
import smtplib
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication
mail_host =('smtp.qq.com')
port =465
send_by = ('[email protected]')
password = ('lsdyxeimzvnebcbh')
send_to = ('[email protected]')
def send_mail(title,content,):
m=MIMEText(content,'plain','utf-8')
m['From']=send_by
m['To']=send_to
m['Subject']=title
#文本
textApart=MIMEText(content)
# 圖片
imageFile = 'D:/test/test.jpg'
imageApart = MIMEImage(open(imageFile, 'rb').read(), imageFile.split('.')[-1])
imageApart.add_header('Content-Disposition', 'attachment', filename=imageFile)
# pdf文檔
pdfFile = 'D:/test/test.pdf'
pdfApart = MIMEApplication(open(pdfFile, 'rb').read())
pdfApart.add_header('Content-Disposition', 'attachment', filename=pdfFile)
# excel表
excelFile = 'D:/test/test.xls'
excelApart = MIMEApplication(open(excelFile, 'rb').read())
excelApart.add_header('Content-Disposition', '', filename=excelFile)
#將其附件加入到發送目標
m = MIMEMultipart()
m.attach(textApart)
m.attach(imageApart)
m.attach(excelApart)
#登錄
try:
smpt=smtplib.SMTP_SSL(mail_host,port,'utf-8')
smpt.login(send_by,password)
smpt.sendmail(send_by,send_to,m.as_string())
print('success!')
except smtplib.SMTPException as e:
print('Error:',e)
if __name__=="__main__":
title='Test'
content='恭喜你收到郵件!'
send_mail(title,content)
自動轉發:
qq郵箱(轉發個單個人)需要自行設置,具體如下所示:
進入郵箱->設置->常規->【郵件自動轉發】,然後你設置的郵箱會收到一個鏈接,點擊確認即可。