检测公网 ip 变化后发送邮箱(一)- Python 发送邮箱代码

家里的带宽申请了公网 ip,通过 pppoe 拨号的方式,运营商会随机分配一个公网,但是两三天就会变动一次。想着能不能定时监测公网 ip ,发邮件通知我。

当然,这是已经做了 ddns 的情况了,如果知道公网 ip,即使 ddns 不生效依然不会影响正常访问。

下面是发送邮箱的代码:

# smtplib 用于邮件的发信动作
import smtplib
# email 用于构建邮件内容
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# 构建邮件头
from email.header import Header

# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = 'xxx@qq.com'
password = 'xxx'
# 收信方邮箱
to_addr = 'xxx@qq.com'
# 发信服务器
smtp_server = 'smtp.qq.com'

html_msg = """
<p>Python 邮件发送HTML格式文件测试...</p>
<p><a href="http://www.runoob.com">这是一个链接</a></p>
"""

# 创建一个带附件的实例msg
msg = MIMEMultipart()
msg['From'] = Header('发送者')  # 发送者
msg['To'] = Header('接收者')  # 接收者
subject = 'Python SMTP 邮件测试'
msg['Subject'] = Header(subject, 'utf-8')  # 邮件主题
# 邮件正文内容
msg.attach(MIMEText(html_msg, 'html', 'utf-8'))

try:
    smtpobj = smtplib.SMTP_SSL(smtp_server)
    smtpobj.connect(smtp_server, 465)    # 建立连接--qq邮箱服务和端口号
    smtpobj.login(from_addr, password)   # 登录--发送者账号和口令
    smtpobj.sendmail(from_addr, to_addr, msg.as_string())
    print("邮件发送成功")
except smtplib.SMTPException:
    print("无法发送邮件")
finally:
    # 关闭服务器
    smtpobj.quit()

经过测试,上面的代码是可以完美运行的。需要注意的是,需要修改部分自己的配置。

阅读剩余
THE END