python获取公网IP,并邮箱发送

此处只是做个记录,有问题自行查询调试。

环境:python 3.5.2

#获取IP地址使用的包
import requests
from bs4 import BeautifulSoup
#发送邮件使用的包
import smtplib
from email.mime.text import MIMEText
from email.header import Header

def get_outer_ip(url):
    r = requests.get(url)
    txt = r.text
    ip = txt[txt.find("[") + 1: txt.find("]")]
    ipcode = "公网IP为:" + ip
    return ipcode

def get_real_url(url=r'http://www.ip138.com'):
    r = requests.get(url)
    txt = r.text
    soup = BeautifulSoup(txt, "html.parser").iframe
    return  soup["src"]

def sendmail(ipcode):
    smtphost = 'smtp.qq.com'  # smtp服务器
    port = 465  # smtp服务器端口
    user = 'xxxxx@qq.com'  # 邮箱账号
    pwd = '开启smtp时会生成一个激活码'  # 非邮箱密码用激活码
    receiver = 'xxxxxx@qq.com'  # 收件人
    # 主题 和 内容
    subject = '外网IP地址'
    content = ipcode

    msg = MIMEText(content, 'plain', 'utf-8')
    msg['from'] = Header(user)
    msg['to'] = Header(receiver)
    msg['subject'] = Header(subject)

    try:
        smtpObj = smtplib.SMTP_SSL(smtphost, port) # SSL加密
        smtpObj.login(user, pwd)
        smtpObj.sendmail(user, receiver, msg.as_string())
    except smtplib.SMTPException as err:
        print(err)

if __name__ == '__main__':
    sendmail(get_outer_ip(get_real_url()))