Python發送的郵件設置收件人隱藏與顯示


1.代碼說明

在實際的使用中,有些郵件我們希望收件人可以看到還有那些人可以收到此郵件,但有些郵件相反,例如含有一些較敏感的信息時,希望收件人都是隱藏的。一般我們可以在郵件配置文件smtp_conig.py中設置,下面是為實現 隱藏 / 顯示 收件人而使用的不同配置。

Python 的運行環境:Python 2.7.5

2.隱藏收件人

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import smtplib
from email.mime.text import MIMEText
from email.header import Header

#郵件發送函數
def send_mail(message):
    # 第三方 SMTP 服務
    mail_host = "mail.q1q2w1w2.com"  # 設置服務器
    mail_user = "OrderCWS_Inform@q1q2w1w2.com"  # 用戶名
    mail_pass = "PWD"  # 口令

    sender = 'OrderCWS_Inform@q1q2w1w2.com'
    receivers = ['收件人1@q1q2w1w2.com','收件人2@q1q2w1w2.com']  # 接收郵件

    try:
        smtpObj = smtplib.SMTP()
        smtpObj.connect(mail_host, 25)  # 25 為 SMTP 端口號
        smtpObj.login(mail_user, mail_pass)
        smtpObj.sendmail(sender, receivers, message.as_string())
        print "郵件發送成功"
    except smtplib.SMTPException:
        print "Error: 無法發送郵件"

    return

3.顯示收件人

此份代碼是在上份代碼的基礎上完善的,新增的地方已用粗體字顯示。

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr from email.utils import formataddr def __format_addr(addr): # 解析郵件地址,以保證郵有別名可以顯示 alias_name, addr = parseaddr(addr) # 防止中文問題,進行轉碼處理,並格式化為str返回 return formataddr((Header(alias_name,charset="utf-8").encode(), addr.encode("uft-8") if isinstance(addr, unicode) else addr)) #郵件發送函數
def send_mail(message):
    # 第三方 SMTP 服務
    mail_host = "mail.q1q2w1w2.com"  # 設置服務器
    mail_user = "OrderCWS_Inform@q1q2w1w2.com"  # 用戶名
    mail_pass = "PWD"  # 口令

    sender = 'OrderCWS_Inform@q1q2w1w2.com'
    receivers = ['收件人1@q1q2w1w2.com','收件人2@q1q2w1w2.com']  # 接收郵件
 strTo = list() try: for a in receivers: strTo.append(__format_addr(a)) except Exception as e: # 沒有對a和toadd進行type判斷,出錯就直接還原 strTo = receivers # 發送HTML格式郵件
 message['To'] = ','.join(strTo) # 這個一定要是一個str,不然會報錯“AttributeError: 'list' object has no attribute 'lstrip'”
try:
        smtpObj = smtplib.SMTP()
        smtpObj.connect(mail_host, 25)  # 25 為 SMTP 端口號
        smtpObj.login(mail_user, mail_pass)
        smtpObj.sendmail(sender, receivers, message.as_string())
        print "郵件發送成功"
    except smtplib.SMTPException:
        print "Error: 無法發送郵件"

    return

 

4.參考資料

python發送多人郵件沒有展示收件人問題的解決方法

https://www.jb51.net/article/163575.htm


免責聲明!

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



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