Python自動發郵件(包括各種附件)+設置自動轉發

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郵箱(轉發個單個人)需要自行設置,具體如下所示:

進入郵箱->設置->常規->【郵件自動轉發】,然後你設置的郵箱會收到一個鏈接,點擊確認即可。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章