SMTP
打开服务器管理器,添加角色和功能,一路点下一步,点到功能,然后安装smtp服务器安装完毕后,工具栏点击IIS6.0 邮件属性,打开中继限制. 重命名一下域名,用来向本地服务器发送信息使用python代码进行邮件发送
import smtplib import poplib from email.mime.text import MIMEText from email.header import Header sender = 'lkt@xx.com' #这里的xx貌似得用自己网站注册的域名,不然qq邮箱不会接收的,是备案过的域名,不是自己dns搭建的域名 # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 receivers = ['a@lkt'] #本地邮箱 # receivers = ['@qq.com'] #接收者的qq邮箱 # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码 message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8') message['From'] = Header("计算机网络实验", 'utf-8') # 发送者 message['To'] = Header("测试", 'utf-8') # 接收者 subject = 'Python SMTP 邮件测试' message['Subject'] = Header(subject, 'utf-8') smtpObj = smtplib.SMTP('服务器公网ip') smtpObj.sendmail(sender, receivers, message.as_string())如果是本地邮箱的话,可以在服务器C:\inetpub\mailroot\Drop这个文件夹下看到邮箱.如果是公网邮箱的话,就直接上邮箱查看.
from smtplib import SMTP_SSL from email.mime.text import MIMEText from email.header import Header email_from = "@qq.com" #改为自己的发送邮箱 email_to = "@qq.com" #接收邮箱 hostname = "smtp.qq.com" #不变,QQ邮箱的smtp服务器地址 login = "@qq.com" #发送邮箱的用户名 password = "" #发送邮箱的密码,即开启smtp服务得到的授权码。注:不是QQ密码。 subject = "python+smtp" #邮件主题 text = "send email" #邮件正文内容 smtp = SMTP_SSL(hostname)#SMTP_SSL默认使用465端口 smtp.login(login, password) msg = MIMEText(text, "plain", "utf-8") msg["Subject"] = Header(subject, "utf-8") msg["from"] = email_from msg["to"] = email_to smtp.sendmail(email_from, email_to, msg.as_string()) smtp.quit()还可以用这种方式进行smtp邮件发送,比较简单.不过不知道是不是因为SSL安全连接的原因,wireshark没办法捕获到smtp协议的数据包. QQ邮箱打开SMTP服务的方法: 打开QQ邮箱->设置->账户 往下拉,看到这个页面,点击开启即可,开启后还能拿到授权码 POP3 window比较新的版本都已经不自带POP3了,所以自己下载就好 POP3服务器软件下载 安装好后打开,新建一个账号,设置好地址和密码.
setting中吧服务打开,就设置完了. 在advanced里找到自己本地邮箱的位置,然后放一封邮件进去.前面smtp往本地发邮件,把那几封邮件复制到这个文件夹下就好. 然后通过python代码,使用POP3协议读取邮件,只用改服务器地址,用户名,密码即可
import os, sys, string import poplib # pop3服务器地址 host = "" # 用户名 username = "lkt@lkt.com" # 密码 password = "123456" # 创建一个pop3对象,这个时候实际上已经连接上服务器了 pp = poplib.POP3(host) # 设置调试模式,可以看到与服务器的交互信息 pp.set_debuglevel(1) # 向服务器发送用户名 pp.user(username) # 向服务器发送密码 pp.pass_(password) # 获取服务器上信件信息,返回是一个列表,第一项是一共有多上封邮件,第二项是共有多少字节 ret = pp.stat() print(ret) # 需要取出所有信件的头部,信件id是从1开始的。 for i in range(1, ret[0]+1): # 取出信件头部。注意:top指定的行数是以信件头为基数的,也就是说当取0行, # 其实是返回头部信息,取1行其实是返回头部信息之外再多1行。 mlist = pp.top(i, 0) print ('line: ', len(mlist[1])) # 列出服务器上邮件信息,这个会对每一封邮件都输出id和大小。不象stat输出的是总的统计信息 ret = pp.list() print(ret) # 取第一封邮件完整信息,在返回值里,是按行存储在down[1]的列表里的。down[0]是返回的状态信息 down = pp.retr(1) print('lines:',len(down)) # 输出邮件 for line in down[1]: print (line) # 退出 pp.quit()提醒一下云服务记得打开安全组入口.这里我为了省事,直接把TCP所有的端口全部打开了.
参考资料: 菜鸟教程smtp python代码 菜鸟教程
POP3python代码以及POP3的状态分析: 其他博主的POP3介绍