计网课后编程作业
邮件客户(SMTP)
这个编程作业的目的是创建一个向任何接收方发送电子邮件的简单邮件客户。你的客户将必须与邮件服务器(如谷歌的电子邮件服务器)创建一个TCP连接,使用SMTP协议与邮件服务器进行交谈,经该邮件服务器向某接收方(如你的朋友)发送一个电子邮件报文,最后关闭与该邮件服务器的TCP连接。
对本作业,配套Web站点为你的客户提供了框架代码。你的任务是完善该代码并通过向不同的用户账户发送电子邮件来测试你的客户。你也可以尝试通过不同的服务器(例如谷歌的邮件服务器和你所在大学的邮件服务器)进行发送。
备注
测试过可以运行哒~~邮件内容在程序中已经设置好了,直接运行python程序邮箱就可以收到信息啦!
下面直接奉上:
源码
SMTPClient
from smtplib import SMTP
from email.mime.text import MIMEText
from email.header import Header
mail_server = 'smtp.gmail.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 = '*********@qq.com'
mail_server = get_mail_server(sender)
sender_pass = '******' #注意是授权码,而不是登录密码,需要在邮箱端先获取,具体方法百度一下就好
receiver = '***********@gmail.com'
mail_msg = 'this is a demo'
# 第一个参数就是邮件正文,
# 第二个参数是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('来自inspurer的个人计算机', '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("邮件发送失败!")