首页 > 编程语言 >python - 邮件发送

python - 邮件发送

时间:2023-04-02 22:14:07浏览次数:38  
标签:python ip smtp 发送 import print mail now 邮件

因为公网ip是动态的,想做一个在ip发生改变后邮件提醒

1. 首先需要开启smtp服务

image

开启后复制授权密码

2. 邮件发送

import smtplib
from email.mime.text import MIMEText

From = '[email protected]' # 发件人邮箱
To = From
pwd = 'ZZZZZZZZZZZZZZZZ' # 授权码

smtp = smtplib.SMTP()
smtp.connect('smtp.163.com',25)
print(smtp.login(From, pwd))

mail = MIMEText('''内容''') # 内容
mail['Subjcet'] = '主题' # 主题
mail['From'] = 'AI' # 发件人(说明作用)
mail['To'] = 'Master' # 接收者(说明作用)

smtp.sendmail(From, To, mail.as_string())
print('send email success')

smtp.quit()

3. 检查ip后定时发送

import smtplib
import requests
import random
import datetime
from email.mime.text import MIMEText
from time import sleep

From = '[email protected]' # 发件人邮箱
To = From
pwd = 'ZZZZZZZZZZZZZZZZ' # 授权码

ip = ''
urls = ['https://checkip.amazonaws.com/', 'http://ip.42.pl/raw']

while True:
    sleep(10)
    res = requests.get(random.choice(urls))
    if ip == res.text.strip():
        print(f'now ip: {ip} ', end='')
        print(f"now time: {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
        continue
    ip = res.text.strip()

    smtp = smtplib.SMTP()
    smtp.connect('smtp.163.com',25)
    print(smtp.login(From, pwd))

    mail = MIMEText(f'new ip: {ip}') # 内容
    mail['Subjcet'] = 'AI' # 主题
    mail['From'] = 'AI' # 发件人(说明作用)
    mail['To'] = 'Master' # 接收者(说明作用)

    smtp.sendmail(From, To, mail.as_string())
    print('send email success.')
    print(f'new ip: {ip} ', end='')
    print(f"now time: {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
    smtp.quit()

标签:python,ip,smtp,发送,import,print,mail,now,邮件
From: https://www.cnblogs.com/wstong2052/p/17281430.html

相关文章

  • Python
    1.python3中格式化字符串的写法在3.6以前的版本中,可以这样用,也就是利用百分号print("我叫%s今年%d岁!"%('小明',10))2.在3.6之后的版本中,可以利用f-stringname="123123"print(f'hello{name}')注意要用大括号括起来,以及单引号的位置。2.python推导式可......
  • Day 20 20.3 数据库之Python操作MySQL
    Python操作MySQLimportpymysql#打开数据库连接db=pymysql.connect(host='localhost',user='root',passwd='...',port=3306,datebase='...')print('连接成功!')#使用cursor()方法创建一个游标对象cursorcursor=db.cursor()#......
  • 塔猫 | Python 日期时间格式化输出,带年、月、日、时、分、秒
    #依赖:importtime|用于:批量文件名后缀(4位浮点秒数,应该没人猜到,当做随机数)defftime(f=''):iff=='-':returntime.strftime('%Y-%m-%d%H:%M:%S',time.localtime())iff=='':timeStamp=time.time()ends......
  • Day 21 21.2 数据库之Python操作redis
    Python操作redis(1)连接redis#方式1importredisr=redis.Redis(host='127.0.0.1',port=6379)r.set('foo','Bar')print(r.get('foo'))#方式2importredispool=redis.ConnectionPool(host='127.0.0.1',port=63......
  • 在Android应用中通过Chaquopy使用Python
    在Android应用中通过Chaquopy使用Python[译]通过Python脚本和包为Android应用带来更多的功能翻译自https://proandroiddev.com/chaquopy-using-python-in-android-apps-dd5177c9ab6b欢迎通过我的Blog访问此文章.Python在开发者社区中时最受欢迎的语言之一,因为其简单,健......
  • Day 21 21.4 数据库之Python操作MongoDB
    PyMongo在这里我们来看一下Python3下MongoDB的存储操作,在本节开始之前请确保你已经安装好了MongoDB并启动了其服务,另外安装好了Python的PyMongo库。安装:pipinstallpymongo添加文档importpymongoclient=pymongo.MongoClient(host='localhost',port=27017)"""......
  • 【Pandas数据处理100例目录】Python数据分析玩转Excel表格数据
    前言大家好,我是阿光。本专栏整理了《Pandas数据分析处理》,内包含了各种常见的数据处理,以及Pandas内置函数的使用方法,帮助我们快速便捷的处理表格数据。正在更新中~✨......
  • Python | 解决方案 | 多个文件共用logger,重复打印问题
    项目中封装了logging库为log.py,实现既把日志输出到控制台,又写入日志文件文件。环境:python3.7.3项目中,多个文件共用logger,出现重复打印问题,解决流程记录如下:文件和调用方式如下:log.pyv1#encoding=utf-8####@Description:日志封装文件#@Author:fatih#@Dat......
  • 【Python】Flask-SQLAlchemy PyCharm无法自动补全解决方案
    ✨Flask-Sqlalchemy无法自动补全解决方案PyCharm版本:PyCharm2021.3.3(ProfessionalEdition)flask版本:2.2.3flask-sqlalchemy版本:3.0.3SQLAlchemy版本:2.0.4在使用flask-sqlalchemy中db.Column,primary_key等无法自动补全降低flask-sqlalchemy版本即可解决pipinstallf......
  • python接口自动化pytest+yaml+allure
    简介分层common公共层data数据层test层+main文件其中pytest框架使用pytest.ini全局配置和conftest.py夹具test层下载对于的安装包编写对于的用例实现参数化编写对于的fixture和pytest全局配置常用pytest执行方法main方法:pytest.main(['-vs','-n2'])console:py......