python3發郵件

# -*- coding: utf-8 -*-
from email import encoders
import os
import traceback
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
import time
import random
# 中文處理
def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))


def send_email(to_addr_in, filepath_in):
    # 郵件發送和接收人配置
    from_addr = '[email protected]'
    smtp_server = 'smtp.163.com'
    password = 'xxx'  # 這是你郵箱的第三方授權客戶端密碼,並非你的登錄密碼
    to_addr = to_addr_in
    to_addrs = to_addr.split(',')

    msg = MIMEMultipart()
    msg['From'] = _format_addr('非誠勿擾 <%s>' % random.randint(0x4e00, 0x9fbf))  # 顯示的發件人
    # msg['To'] = _format_addr('管理員 <%s>' % to_addr)                # 單個顯示的收件人
    msg['To'] = ",".join(to_addrs)  # 多個顯示的收件人
    msg['Subject'] = Header('千里求緣', 'utf-8').encode()  # 顯示的郵件標題

    # 需要傳入的路徑
    # filepath = r'D:\test'
    filepath = filepath_in
    r = os.path.exists(filepath)
    if r is False:
        msg.attach(MIMEText('''受友之託!
女,24歲,未婚,身高165cm,體重48kg,河南鄭州人。目前在阿里巴巴工作,負責支付寶相關業務,支付寶搜索工號:527536605 可見照片。漂亮大方,愛好讀書、健身、游泳。杭州有房一套,有車。父母退休,家庭不拜金,人務實,一直沒有合適的男朋友。她本人要求不高,只要對她真心好就行。
''', 'plain', 'utf-8'))
    else:
        # 郵件正文是MIMEText:
        msg.attach(MIMEText('send with file...', 'plain', 'utf-8'))
        # 遍歷指定目錄,顯示目錄下的所有文件名
        pathDir = os.listdir(filepath)
        for allDir in pathDir:
            child = os.path.join(filepath, allDir)
            # child.decode('gbk')  # .decode('gbk')是解決中文顯示亂碼問題
            # 添加附件就是加上一個MIMEBase,從本地讀取一個文件
            with open(child, 'rb') as f:
                # 設置附件的MIME和文件名,這裏是txt類型:
                mime = MIMEBase('1', 'png', filename=allDir)
                # 加上必要的頭信息:
                mime.add_header('Content-Disposition', 'attachment', filename=allDir)
                mime.add_header('Content-ID', '<0>')
                mime.add_header('X-Attachment-Id', '0')
                # 把附件的內容讀進來:
                mime.set_payload(f.read())
                # 用Base64編碼:
                encoders.encode_base64(mime)
                # 添加到MIMEMultipart:
                msg.attach(mime)
    try:
        server = smtplib.SMTP(smtp_server, 25)
        server.set_debuglevel(1)  # 用於顯示郵件發送的執行步驟
        server.login(from_addr, password)
        server.sendmail(from_addr, to_addrs, msg.as_string())
        server.quit()
    except Exception as e:
        print("Error: unable to send email")
        print(traceback.format_exc())


if __name__ == '__main__':
    # while True:
    send_email('[email protected]','')
        # time.sleep(2)

 

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