Socket编程:邮件客户
实验描述
使用STMP协议从一个邮箱向另一个邮箱发送邮件
SMTP.py
#作业3:邮件客户
from smtplib import SMTP
from email.mime.text import MIMEText
from email.header import Header
mail_server = 'smtp.qq.com'
#根据发送方邮箱确定邮箱服务器
#qq邮箱的服务器为smtp.qq.com;163邮箱为smtp.163.com
def get_mail_server(sender):
key = sender[sender.index('@')+1:]
return "smtp."+key
port = '25' ## SMTP协议默认端口是25
sender = 'QQNUMBER@qq.com'
mail_server = get_mail_server(sender)
sender_pass = 'YOUR POSTBOX AUTHORIZATION CODE' #注意是授权码,而不是登录密码,需要在邮箱端先获取
receiver = 'YOUR POSTBOX NAME@163.com'
mail_msg = '淡黄的长裙,蓬松的头发'
#第一个参数就是邮件正文,
# 第二个参数是MIME的subtype,传入'plain'表示纯文本,最终的MIME就是'text/plain',
# 最后一定要用utf-8编码保证多语言兼容性。
msg = MIMEText(mail_msg, 'plain', 'utf-8')
msg['From'] = sender
msg['To'] = receiver
#Header对象编码文本,包含utf-8编码信息和Base64编码。
msg['Subject'] = Header('来自Weber的个人计算机', 'utf-8')
try:
server = SMTP(mail_server, port)
#用set_debuglevel(1),可以打印出和SMTP服务器交互的所有信息
#server.set_debuglevel(1)
server.login(sender, sender_pass)
#由于可以一次发给多个人,所以传入一个list,邮件正文是一个str,as_string()把MIMEText对象变成str
server.sendmail(sender, (receiver), msg.as_string() )
server.quit()
print("邮件发送成功!")
except:
server.quit()
print("邮件发送失败!")
注意将上面代码中的邮箱地址和邮箱授权码改成自己的哦
运行这个代码,打开邮箱即可查看收到的邮件
打开浏览器端的接受方邮箱
这里我用QQ邮箱的授权码,发送邮件给我的163邮箱