用python羣發郵件(顯示圖片+圖片附件)

先獲取郵箱授權碼

QQ郵箱授權碼獲取方式
其他的百度搜啦~

函數部分

import smtplib
import os.path
import mimetypes
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.header import Header
from smtplib import SMTP_SSL
from email import encoders
import time
from tqdm import tqdm
def send_email(receiver):
    host_server = 'smtp.qq.com'#qq郵箱smtp服務器
    sender_qq = '***@qq.com'#sender_qq爲發件人的qq號碼
    pwd = '***'#pwd爲qq郵箱的授權碼
    sender_qq_mail = '***@qq.com'#發件人的郵箱

    mail_content = '' #郵件的正文內容
    mail_title = '全國計算生物學與生物信息學會議'#郵件標題

    #郵件正文內容
    msg = MIMEMultipart('related')
    msg["Subject"] = Header(mail_title, 'utf-8')
    msg["From"] = sender_qq_mail


    msgAlternative = MIMEMultipart('alternative')
    msg.attach(msgAlternative)
    
    #郵件正文內容,內含需顯示的2個圖片
    mail_body = """
    <p><img src="cid:send_image_1"></p>
    <p>尊敬的老師、同仁:</p>

    <p>您好!</p>

    <p>詳見: https://blog.csdn.net/weixin_41171061</p>

    <p>組委會聯繫方式:***@163.com</p>

    <p> (羣二維碼)</p>        
    <p><img src="cid:send_image_2"></p>

    <p>祝您:身體健康,科研順利!</p>
    <p></p>
    <p>                                                                           NCCBB2020組委會</p>
    """

    msgText = (MIMEText(mail_body, 'html', 'utf-8'))
    msgAlternative.attach(msgText)
    
    # 構造MIMEBase對象做爲文件附件內容並附加到根容器

    ## 讀入文件內容並格式化 [方式1]------------------------------
    file_name = '邀請海報.jpg'
    data = open(file_name, 'rb')
    ctype,encoding = mimetypes.guess_type(file_name)
    if ctype is None or encoding is not None:
        ctype = 'application/octet-stream'
    maintype,subtype = ctype.split('/',1)
    file_msg = MIMEBase(maintype, subtype)
    file_msg.set_payload(data.read())
    data.close( )
    encoders.encode_base64(file_msg)#把附件編碼

    ## 設置附件頭
    basename = os.path.basename(file_name)
    file_msg.add_header('Content-Disposition','attachment', filename = basename)#修改郵件頭
    msg.attach(file_msg)

    file_name = '參會羣二維碼.JPG'
    data = open(file_name, 'rb')
    ctype,encoding = mimetypes.guess_type(file_name)
    if ctype is None or encoding is not None:
        ctype = 'application/octet-stream'
    maintype,subtype = ctype.split('/',1)
    file_msg = MIMEBase(maintype, subtype)
    file_msg.set_payload(data.read())
    data.close( )
    encoders.encode_base64(file_msg)#把附件編碼

    ## 設置附件頭
    basename = os.path.basename(file_name)
    file_msg.add_header('Content-Disposition','attachment', filename = basename)#修改郵件頭
    msg.attach(file_msg)
    
    # 指定圖片爲當前目錄
    with open('邀請海報.jpg', 'rb') as f:
        msgImage_1 = MIMEImage(f.read())
        msgImage_1.add_header('Content-ID', '<send_image_1>')# 定義圖片 ID,在 HTML 文本中引用
        msg.attach(msgImage_1)

    with open('參會羣二維碼.JPG', 'rb') as f:
        msgImage_2 = MIMEImage(f.read())
        msgImage_2.add_header('Content-ID', '<send_image_2>')
        msg.attach(msgImage_2)
        
    msg["To"] = receiver

    smtp = SMTP_SSL(host_server)#ssl登錄
    smtp.set_debuglevel(1)#set_debuglevel()是用來調試的。參數值爲1表示開啓調試模式,參數值爲0關閉調試模式
    smtp.ehlo(host_server)
    smtp.login(sender_qq, pwd)

    smtp.sendmail(sender_qq_mail, receiver, msg.as_string())
    smtp.quit()
    
    return None

運行部分

receivers = ['***@126.com','***@qq.com','***@edu.cn']
for receiver in tqdm(receivers):
    send_email(receiver) # 收件人不會出現一羣,顯得是特意發給這個人的~
    time.sleep(10)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章