Selenium3+python3-發送添加附件的郵件


發送郵件時,需寫對應的郵箱服務器及端口號

注:郵件發多了會被拒,發不出去!!!

#!/user/bin/python
# -*- coding:utf-8 -*-

import smtplib
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email import encoders

# Python對SMTP支持有smtplib和email兩個模塊,email負責構造郵件,smtplib負責發送郵件。


def get_email_obj(email_subject, email_from, to_addr_list):
    '''
    構造郵件對象,並設置郵件主題、發件人、收件人,最后返回郵件對象
    :param email_subject:郵件主題
    :param email_from:發件人
    :param to_addr_list:收件人列表
    :return :郵件對象 email_obj
    '''
    # 構造 MIMEMultipart 對象做為根容器
    email_obj = MIMEMultipart()
    email_to = ','.join(to_addr_list)   # 將收件人地址用“,”連接
    # 郵件主題、發件人、收件人
    email_obj['Subject'] = Header(email_subject, 'utf-8')
    email_obj['From'] = Header(email_from, 'utf-8')
    email_obj['To'] = Header(email_to, 'utf-8')
    return email_obj


def attach_content(email_obj, email_content, content_type='plain', charset='utf-8'):
    '''
    創建郵件正文,並將其附加到跟容器:郵件正文可以是純文本,也可以是HTML(為HTML時,需設置content_type值為 'html')
    :param email_obj:郵件對象
    :param email_content:郵件正文內容
    :param content_type:郵件內容格式 'plain'、'html'..,默認為純文本格式 'plain'
    :param charset:編碼格式,默認為 utf-8
    :return:
    '''
    content = MIMEText(email_content, content_type, charset)    # 創建郵件正文對象
    email_obj.attach(content)     # 將郵件正文附加到根容器


def attach_part(email_obj, source_path, part_name):
    '''
    添加附件:附件可以為照片,也可以是文檔
    :param email_obj:郵件對象
    :param source_path:附件源文件路徑
    :param part_name:附件名
    :return:
    '''
    part = MIMEBase('application', 'octet-stream')                          # 'octet-stream': binary data   創建附件對象
    part.set_payload(open(source_path, 'rb').read())                        # 將附件源文件加載到附件對象
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', 'attachment', filename=('gbk', '', '%s' % part_name))     # 給附件添加頭文件
    email_obj.attach(part)                                                                # 將附件附加到根容器


def send_email(email_obj, email_host, host_port, from_addr, pwd, to_addr_list):
    '''
    發送郵件
    :param email_obj:郵件對象
    :param email_host:SMTP服務器主機
    :param host_port:SMTP服務端口號
    :param from_addr:發件地址
    :param pwd:發件地址的授權碼,而非密碼
    :param to_addr_list:收件地址
    :return:發送成功,返回 True;發送失敗,返回 False
    '''
    try:
        '''
            # import smtplib
            # smtp_obj = smtplib.SMTP([host[, port[, local_hostname]]] )
                # host: SMTP服務器主機。
                # port: SMTP服務端口號,一般情況下SMTP端口號為25。
            # smtp_obj = smtplib.SMTP('smtp.qq.com', 25)
        '''
        smtp_obj = smtplib.SMTP_SSL(email_host, host_port)     # 連接 smtp 郵件服務器
        smtp_obj.login(from_addr, pwd)
        smtp_obj.sendmail(from_addr, to_addr_list, email_obj.as_string())  # 發送郵件:email_obj.as_string():發送的信息
        smtp_obj.quit()                                 # 關閉連接
        print("發送成功!")
        return True
    except smtplib.SMTPException:
        print("發送失敗!")
        return False


if __name__ == "__main__":
    # (QQ郵箱)
    email_host = "smtp.qq.com"            # smtp 郵件服務器
    host_port = 465                       # smtp 郵件服務器端口:SSL 連接
    from_addr = "發件地址"                # 發件地址
    pwd = "授權碼"                  # 發件地址的授權碼,而非密碼

    # (163郵箱)
    # email_host = "smtp.163.com"             # smtp 郵件服務器
    # host_port = 465                         # smtp 郵件服務器端口:SSL 連接
    # from_addr = "發件地址"                  # 發件地址
    # pwd = "授權碼"                    # 發件地址的授權碼,而非密碼

    to_addr_list = ["郵箱1", "郵箱2"]       # 收件地址

    email_content = "郵件主題"
    email_content_html = """
    <p>Python 郵件發送...</p>
    <p><a href="http://www.runoob.com">菜鳥教程鏈接</a></p>
    <p>圖片:</p>
    <p><img src="cid:image1"></p>
    """
    email_subject = "郵件主題"
    email_from = "發件人"
    source_path = r"D:\我的文檔\My Pictures\avatar.jpg"
    part_name = 'avatar.png'

    email_obj = get_email_obj(email_subject, email_from, to_addr_list)
    attach_content(email_obj, email_content)
    attach_part(email_obj, source_path, part_name)
    send_email(email_obj, email_host, host_port, from_addr, pwd, to_addr_list)

 


免責聲明!

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



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