python3 email發送郵件帶附件


郵箱發送郵件帶附件格式,使用方法。

1.可以選擇是否增加附加,如果不需要附件,只需要將附件的傳參值為空即可。

2.郵件抄送功能雞肋,如果想用抄送功能,把To和Cc合並全部發送。

3.可以把需要長改變參數取出,如email地址。

# !/usr/bin/env python
# -*- coding: utf-8 -*-
import smtplib
import email.mime.multipart
import email.mime.text
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
import email
import base64

class send_mail:
    def __init__(self, From, To,Cc, pw, file_path, file_header, file_body):
        # 發送人
        self.From = From
        # 收件人['aaa@a.com','bbb@a.com']
        self.To = list(To)
        #抄送人
        self.Cc = list(Cc)
        # 登錄郵件密碼base64.encodestring('明文')加密后密碼
        self.pw = pw
        # 文件具體路徑(路徑+文件名稱)
        self.file_path = file_path
        # 標題頭
        self.file_header = file_header
        # 內容
        self.file_body = file_body

    def login(self):
        server = smtplib.SMTP('郵箱域名 or ip')
        server.starttls()
        # pwd = base64.decodestring(self.pw)
        server.login(self.From, self.pw)
        try:
            receive = self.To
            #receive.extend(self.Cc)
            server.sendmail(self.From,self.To,self.atta())
        finally:
            server.quit()

    def atta(self):
        main_msg = MIMEMultipart()
        # 內容
        text_msg = MIMEText(self.file_body)
        main_msg.attach(text_msg)
        try:
            contype = 'application/octet-stream'
            maintype, subtype = contype.split('/', 1)

            data = open(self.file_path, 'rb')
            file_msg = MIMEBase(maintype, subtype)
            file_msg.set_payload(data.read())
            data.close()
            email.encoders.encode_base64(file_msg)
            basename = os.path.basename(self.file_path.split('/')[-1])
            file_msg.add_header('Content-Disposition', 'attachment', filename=basename)
            main_msg.attach(file_msg)
        except Exception as e:
            pass

        main_msg['From'] = self.From
        main_msg['To'] = ";".join(self.To)
        main_msg['Cc'] = ";".join(self.Cc)

        # 標題頭
        main_msg['Subject'] = self.file_header
        main_msg['Date'] = email.utils.formatdate()

        fullText = main_msg.as_string()

        return fullText


if __name__ == '__main__':
    s = send_mail('發送郵箱', ['收件人郵箱'],['郵箱], '郵箱密碼', '附件具體位置', '主題', '內容')
    s.login()
    print('發送成功!')

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM