用Python的email模块发送邮件


  Python发送邮件使用的协议是STMP,Python内置对STMP的支持,可以发送纯文本邮件、HTML邮件及带附件的邮件。Python对STMP支持有两个模块email和smtplib,email负责构造邮件,stmplib负责发送邮件。

1、申请一个163邮箱

  地址:https://mail.163.com/register/index.htm?from=163mail&utm_source=163mail,完成邮箱的申请,然后开启SMTP功能。

 ,

开启服务后会给一个授权码,需要保存好,后面需要用到。

 

 

 

 2、邮件的发送

  完成第1步之后,选构造一个纯文本邮件并发送给指定邮箱:

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


def _format_addr(s):
    name,addr = parseaddr(s)
    return formataddr((Header(name,'utf-8').encode(),addr))
'发件人地址,第一步申请的邮箱地址'
from_addr = 'email@163.com'
'邮箱密码(第一步开通SMTP服务后给的授权码)'
pwd = 'passwoerd'
'收件人地址'
to_addr = '41234444@qq.com'
'163邮箱服务器地址'
smtp_server = 'smtp.163.com'
'设置邮件信息'
msg = MIMEText('Python发送纯文本邮件Demo','plain','utf-8')
'''
构造MIMEText需要三个参数:邮件正文、MIME的subtype,plain表示纯文本、编码格式
'''
msg['From'] = _format_addr('测试邮件<%s>'%from_addr)
msg['To'] = _format_addr('收件人<%s>'%to_addr)
msg['Subject'] = Header('测试','utf-8').encode()

'发送邮件'
server = smtplib.SMTP(smtp_server,25)#25为端口号
server.login(from_addr,pwd)
server.sendmail(from_addr,[to_addr],msg.as_string())
server.quit()

结果:

 

 

发送html邮件只需要在构造文本的时候,将plain参数改为html即可:

'设置邮件信息'
msg = MIMEText('<a href="http://www.baidu.com" target="_blank">点一下去百度</a>','html','utf-8')

  结果:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM