利用python实现发送电子邮件
准备工作
- 进入qq 邮箱开通POP3/SMTP服务 你会得到一个pop3的授权码记住这个授权码后面会用到
- 导入以下内置模块
# import smtplib
# from email.mime.text import MIMEText
# from email.utils import formataddr
代码实现
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
def send_emile():
my_name="xx" #发件人姓名
my_email="xxxxxxxxxx@qq.com" #发件人邮箱
my_passwd="xxxssaxasxasxsaxa" #发件人pop3授权码 可在qq邮箱开启功能查看
to_email="3238138357@qq.com" #收件人邮箱地址
to_content="success" #邮件内容
to_subject="我的主题" #邮件主题
to_name="贺胜" #发件人姓名
msg=MIMEText(to_content,"plain","utf-8") #写入邮件内容
msg["From"]=formataddr([my_name,my_email]) #发件人信息
msg["To"]=formataddr([to_name,to_email]) #收件人信息
msg["Subject"]=to_subject #邮件主题
server=smtplib.SMTP("smtp.qq.com",25) #连接邮箱服务器
server.login(my_email,my_passwd) #登录自己邮箱 密码为ppo3授权码
server.sendmail(my_email,[to_email, ],msg.as_string()) #发送邮件
server.quit() #退出邮箱连接
def main():
send_emile()
运行效果
代码解读:
-
Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件
-
构造MIMEText对象时,第一个参数是邮件正文;第二个参数是MIME的subtype,传入’plain’表示纯文本,最终的MIME就是’text/plain’;最后一定要用utf-8编码保证多语言兼容性
-
发送的邮件需要添加头部信息,头部信息中包含发送者、接收者、邮件主题等信息:message[‘From’]、message[‘To’]、message[‘Subject’]
-
构造完要发送的邮件信息后,通过SMTP发出去:login()方法用来登录SMTP服务器;sendmail()方法就是发邮件,由于可以一次发给多个人,所以传入一个list;邮件正文是一个str,as_string()把MIMEText对象变成str
-
SMTP.close() :关闭SMTP服务器连接
注意事项:
- 如果遇到SMTP_SSL语句报错(UnicodeDecodeError:‘utf-8’ codec can’t decode),可能是因为计算机名中含有中文导致的。