python 发送匿名邮件或无发件人

简述

python 发送邮件一般可以通过smtplib,如果发送时不设置发送人信息,会有什么效果呢

取消发件人信息

取消From 信息设置。

import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr


def __format_addr(k):
    name, addr = parseaddr(k)
    return formataddr((Header(name, 'utf-8').encode(), addr))


def send_mail():
    # 163邮箱smtp服务器
    wy_server = 'smtp.163.com'
    # sender_163为发件人的163号码
    sender_163 = 'xxx@163.com'
    # pwd为163邮箱的授权码
    pwd = 'xxx'
    # 发件人的邮箱
    sender_163_mail = 'xxx@163.com'
    # 收件人邮箱
    receivers = ['xx@163.com']

    # 邮件的正文内容
    mail_content = '你好,这是使用python登录163邮箱发邮件的测试'
    # 邮件标题
    mail_title = '极客架构的邮件,可以关注公众号:极客架构。'

    try:
        # ssl登录
        smtp = smtplib.SMTP_SSL(wy_server)
        # set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式
        smtp.set_debuglevel(1)
        smtp.ehlo(wy_server)
        smtp.login(sender_163, pwd)
        msg = MIMEText(mail_content, "plain", 'utf-8')
        msg["Subject"] = Header(mail_title, 'utf-8').encode()
        #msg["From"] = Header("这是来自远方的一封匿名邮件", 'utf-8')   # 发送者
        #msg["From"] = __format_addr(sender_163)
        msg["To"] = __format_addr(receivers)
        smtp.sendmail(sender_163, receivers, msg.as_string())
        smtp.quit()
        return "success"
    except smtplib.SMTP_SSLException as e:
        return "error"


if __name__ == "__main__":
    print(send_mail())

取消发件人收信效果

生成一个发件信息

msg["From"] = Header("这是来自远方的一封匿名邮件", 'utf-8')

生成一个匿名地址

#msg["From"] = __format_addr('xxx@163.com')

总结

以上的方式中,收信后,都没有直接体现发件人信息。以上只是为测试,不要用于非法用途。

posted @ 2020-11-20 17:31  极客架构  阅读(770)  评论(0)    收藏  举报