我目前在给自己服务器做了一个邮件登入系统,就是当有人登入到我的服务器时,服务器会自动给我发送一封邮件,我采用的是smtp协议的邮件系统,QQ也支持这种方法,所以我采用了QQ邮件的SMTP服务器。
首先你需要在你的QQ邮件里开启它
在你的qq邮件里找到设置-账户
选择开启smtp
注意完成之后要牢记你的授权码
下面这段是python使用smtp库的代码,其中包括了获取当前登录日志ip的功能
这段代码的作用是,当用户登入后会获取登入最近十次的IP地址然后发送至邮箱
1.导入库
#coding=utf-8
import smtplib
import os
from email.mime.text import MIMEText
2.获取shell命令输出函数,用于执行命令获取最近登录ip
def execCmd(cmd):
r = os.popen(cmd)
text = r.read()
r.close()
return text
3.设置你的qq邮箱smtp账号与授权码
msg_from='xxx@qq.com'
passwd='moomibjihxxddcha'
4.设置要发送给谁的邮箱
可以是任意邮箱,但需要支持smtp,现在基本上都是支持的,你也可以在你的配置里看一下
msg_to='xxx@qq.com'
5.获取最近登入ip
result = execCmd("last")
6.设置报文与发送
Subject为邮件标题
From发送者邮箱地址
To为目标邮箱
msg为内容,用到MIMEText函数转换成邮件内容格式
一般情况下smtp服务器地址就是你注册的邮件服务商地址,smtp.qq.com或smtp.163.com同时端口一律按照标准来都是465
subject="有人登录了!!!!"
content=result
msg = MIMEText(content)
msg['Subject'] = subject
msg['From'] = msg_from
msg['To'] = msg_to
try:
s = smtplib.SMTP_SSL("smtp.qq.com",465)
s.login(msg_from, passwd)
s.sendmail(msg_from, msg_to, msg.as_string())
print "发送成功"
except s.SMTPException,e:
print "发送失败"
finally:
s.quit()
完整代码:
#coding=utf-8
import smtplib
import os
from email.mime.text import MIMEText
def execCmd(cmd):
r = os.popen(cmd)
text = r.read()
r.close()
return text
msg_from='xxx@qq.com'
passwd='moomibjihxxddcha'
msg_to='xxx@qq.com'
result = execCmd("last")
subject="有人登录了!!!!"
content=result
msg = MIMEText(content)
msg['Subject'] = subject
msg['From'] = msg_from
msg['To'] = msg_to
try:
s = smtplib.SMTP_SSL("smtp.qq.com",465)
s.login(msg_from, passwd)
s.sendmail(msg_from, msg_to, msg.as_string())
print "发送成功"
except s.SMTPException,e:
print "发送失败"
finally:
s.quit()
具体效果: