简述
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\')
总结
以上的方式中,收信后,都没有直接体现发件人信息。以上只是为测试,不要用于非法用途。