Python 的 smtplib 在正常运行时工作,但通过 cron 执行时不行

0 投票
2 回答
653 浏览
提问于 2025-04-16 02:49

我有一段Python代码,像下面这样。手动运行的时候一切正常。但是当通过定时任务(cronjob)运行时,邮件却没有发送。以下是代码:

msg = MIMEMultipart()

msg['From'] = sender
msg['To'] = to
msg['Subject'] = subject
msg.attach(MIMEText(message))

mailServer = smtplib.SMTP("smtp.gmail.com", 587)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login(login, password)
print mailServer.sendmail(login, to, msg.as_string())

2 个回答

0

在我的情况中,是 os.getenv 在邮件内容中没有正常工作。

可能这个错误是因为定时任务脚本默认没有任何的环境变量。

0

也许你在Unix环境中手动执行和通过定时任务(cron)执行时,环境变量是不同的。你可以在定时任务中运行“env >file”这个命令,然后把结果和你在交互式环境下运行时的环境变量进行对比。

撰写回答