如何设置时间和日期以继续执行python程序

2024-04-18 21:58:31 发布

您现在位置:Python中文网/ 问答频道 /正文

代码如下:

import smtplib
content = ["zero","one", "two", "three", "four", "five", "six"]

def email (content):    
    FROMADDR = "SENDER@gmail.com"
    LOGIN    = FROMADDR 
    PASSWORD = "PASSWORD"
    TOADDRS  = ["SEND TO"]
    SUBJECT  = "Test"
    for term in content: #LOOP
        msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
               % (FROMADDR, ", ".join(TOADDRS), SUBJECT) )
        msg += term  +  "\r\n"
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.set_debuglevel(1)
        server.ehlo()
        server.starttls()
        server.login(LOGIN, PASSWORD)
        server.sendmail(FROMADDR, TOADDRS, msg)
        server.quit()
email(content)

这个程序在列表中迭代,并给每个项目发送电子邮件,一次一个。你知道吗

如何让程序在每周的特定时间通过电子邮件发送列表中的项目,直到它发送列表中的所有项目?你知道吗

(我问这个与这个例子相关的问题是因为它更简单)

假设我想一次发一封邮件,直到所有邮件都发送出去。第一项在星期一下午2点,第二项在星期一下午4点,第三项在星期二晚上7点,第四项在星期五晚上8点。然后我希望程序每周在这些时间发送接下来的四个项目,直到它发送列表上的所有项目。所以我应该在那个时候拿到名单上的下一个项目。你知道吗

我知道linux有一个程序可以在特定时间运行一个程序,但是如果我使用这个程序,它每次都会发送整个列表,而不是下一项。你知道吗

pythonsleep()函数将不起作用,因为我希望它发送电子邮件的时间间隔不是固定的。你知道吗


Tags: 项目程序com列表serveremail时间login
2条回答

绿色”&;资源非常经济的方法(无cron,无需多次重读任何内容)

这是一个智能调度问题解决方案,由您负责创建正确的smtp发送处理程序和迭代器,而不是修复上面的代码。你知道吗

import Tkinter as tk
import time
root = tk.Tk()
aNextSendingTIME = aFunctionToGetNextSendingTIME_asSECONDs()   # .SET <WHEN_NEXT>
root.title( time.ctime( aNextSendingTIME ) )                   # .GUI show ...
root.lower()                                                   # .GUI minimize inTaskBAR
#     -
# SCHEDULER
#     -
root.after( 1000 * ( aNextSendingTIME                          # .GOT <WHEN_NEXT>
                   - time.time()                               # .SUB <NOW>
                     ),                                        # .MUL asMSECs
            sendNextOneEmailFUNCTION                           # .SET HANDLER
            )
# /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ YOUR APPLICATION CODE \/\/\/\/\/\/\/\


# /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ YOUR APPLICATION CODE \/\/\/\/\/\/\/\

然后:

def sendNextOneEmailFUNCTION( ):
    #                     -<your SMTP-handling code here> -


    #                     -<your SMTP-handling code here> -
    # PLUS:
    # calc / set the next sending after aNextPointInTime_asMilliseconds DISTANCE
    aNextSendingTIME = aFunctionToGetNextSendingTIME_asSECONDs() # .GET <WHEN_NEXT>
    aNextPointInTime_asMilliseconds = 1000
                                    * ( aNextSendingTIME
                                      - time.time()              
                                        )
    root.title( time.ctime( aNextSendingTIME ) )               # .GUI update inTaskBAR
    #        
    # SCHEDULE AGAIN
    #        
    root.after( aNextPointInTime_asMilliseconds,               # .SET <WHEN_NEXT>
                sendNextOneEmailFUNCTION                       # .SET HANDLER
                )
    return

最后,要设置日期,可以通过命令行<;filname>;或编码的asList = [ "2014-08-21 12:00", "2014-08-21 17:30", ... ]进行任何输入

def aFunctionToGetNextSendingTIME_asSECONDs():
    #
    # solve data adaptation from a selected data-source, be it <asList> or other
    #
    aNextSendingTIME_asSECONDs = ...

    return ( aNextSendingTIME_asSECONDs )

将cron设置为在希望发送消息的时间运行。你知道吗

在磁盘上保存一个包含列表的文件,以及一个placekeeper字符串。你知道吗

每次脚本运行时,打开文件,执行需要执行的操作,然后将文件写回。你知道吗

相关问题 更多 >