Как сделать так, чтобы скрипт Python автоматически отправлял электронное письмо при изменении определенных данных? - PullRequest
0 голосов
/ 09 марта 2019

Итак, я сделал скрипт на python, чтобы каждые 12 часов отправлять мне электронные письма с моим публичным IP-адресом.Моя цель - заставить его автоматически отправлять электронную почту только при изменении моего IP-адреса.Я был бы рад, если бы вы, ребята, могли бы оказать мне некоторую помощь.

Вот мой код:

from json import loads
from urllib.request import urlopen
import time
import smtplib

while True:
    data = loads(urlopen("http://httpbin.org/ip").read())
    print ("The public IP is : %s" % data["origin"])

    try:
        server_ssl = smtplib.SMTP_SSL('smtp.gmail.com', 465)
        server_ssl.ehlo()

        server_ssl.login("fromemail@gmail.com", "password")
        msg = """From: Automated Python Script <fromemail@gmail.com>
        To: First Last <toemail@gmail.com>
        Subject: SMTP e-mail test

        """ + data["origin"] + """

        """

        server_ssl.sendmail("fromemail@gmail.com", "toemail@gmail.com", msg)

        print ("Successfully sent email!")

        time.sleep(720)

    except SMTPException:
        print ("Something went wrong...")

Кстати, это на питоне 3.

Я быМне действительно нравится отправлять мне электронные письма автоматически, когда мой публичный IP-адрес меняется, вместо того, чтобы отправлять мне электронные письма с, вероятно, одним и тем же IP-адресом каждые 12 часов.

Спасибо!

1 Ответ

0 голосов
/ 09 марта 2019

Этот параметр проверяет изменение общедоступного IP-адреса на любой требуемый интервал времени на основе значения, установленного для x.Если ваш публичный ip часто меняется, тогда установите меньшие значения x, а если он часто меняется, вы можете установить его соответственно

from json import loads
from urllib.request import urlopen
import time
import smtplib
data_prev = loads(urlopen("http://httpbin.org/ip").read())
prev_public = data_prev["origin"]
while True:
    data_next = loads(urlopen("http://httpbin.org/ip").read())
    next_public = data_next["origin"]
    print ("The public IP is : %s" % data["origin"])
    if(next_public != prev_public):
        prev_publi = next_public
        try:
            server_ssl = smtplib.SMTP_SSL('smtp.gmail.com', 465)
            server_ssl.ehlo()

            server_ssl.login("fromemail@gmail.com", "password")
            msg = """From: Automated Python Script <fromemail@gmail.com>
            To: First Last <toemail@gmail.com>
            Subject: SMTP e-mail test

            """ + data["origin"] + """

            """

            server_ssl.sendmail("fromemail@gmail.com", "toemail@gmail.com", msg)

            print ("Successfully sent email!")

            time.sleep(x) # set x to whichever value you want
            #time.sleep(720)

        except SMTPException:
            print ("Something went wrong...")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...