如何在5分钟内每1分钟发送一封大邮件和一封小邮件

2024-04-26 07:50:54 发布

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

我正试图为下面的逻辑阐述。。。。在

1.  Send a large e-mail (1MB or so) every 1 min for 5mins. 
2.  Wait for 5 mins 
3.  Send 5 small e-mails (few 100 bytes) every 1 min for 5mins
4.  Then wait for 5 mins and start again 1 repeating the same cycle.
5.      Start with 1 again

我创建了一个电子邮件脚本,可以接受1MB和几个100字节的附件, 我的困惑是,如何在5分钟的间隔内,每1分钟发送一封大邮件和一封小邮件

^{pr2}$

Tags: orsendforso邮件mail逻辑min
2条回答

你可以用很多不同的方法来解决这个问题,这里只是一个例子。希望有帮助。在

import time


def send_email(email):
    print 'sending %s' % email


def get_large_email():
    return 'large'


def get_small_email():
    return 'small'


def get_email(size):
    if size == 'large':
        email_to_send = get_large_email()
    elif size == 'small':
        email_to_send = get_small_email()
    return email_to_send

email_size = 'large'
while True:
    for i in range(5):
        email_to_send = get_email(email_size)
        send_email(email_to_send)
        time.sleep(60)
    email_size = 'small' if email_size == 'large' else 'large'

至少有两种方法可以解决这个问题。在

首先是完全使用python。在

def send_mail(large=True):
    """Send 5 emails, 1 minute apart."""
    for _ in range(5):
        # send an email here, large or small.
        if large:
            send_large_email()
        else:
            send_small_email()
        wait()  # 1 minute

def wait(mins=1):
    time.sleep(mins * 60)

def main():
    start = time.time()
    day = 24 * 60 * 60
    while time.time() - start < day:
         send_mail()
         wait(5)  # wait 5 minutes
         send_mail(large=False)
         wait(5)

这是你要用的基本轮廓。在

另一种方法是使用cron。创建两个脚本,一个用于发送小电子邮件,另一个用于发送大型电子邮件。设置cron以适当的间隔运行这些脚本。在

相关问题 更多 >