脚本可以在PC上运行,但不能在服务器

时间:2017-09-20 08:47:28

标签: python email smtp smtp-auth

我写了一个小的python脚本,每天上午10点自动发送电子邮件。该脚本在运行Linux Mint 18的笔记本电脑上工作正常。但是当我将脚本部署到运行Ubuntu 16.04.3的服务器(从DigitalOcean获取的droplet)时,脚本会出现STMP身份验证错误。

允许安全性较低的应用登录,并在我的Gmail帐户中启用其他设置。

这是脚本 -

import schedule
import time
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

fromaddr = "yadullahabidi@gmail.com"
toaddr = "yadullahabidi@gmail.com"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "Attendance for Yadullah Abidi"

body = "Good morning Surender Ji. I reached office at 10:00 AM today."
msg.attach(MIMEText(body, 'plain'))

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(fromaddr,"password")
text = msg.as_string()
def job():
    server.sendmail(fromaddr, toaddr, text)

schedule.every().day.at("08:00").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

1 个答案:

答案 0 :(得分:1)

使用DigitalOcean阻止所有SMTP操作,您需要通过控制面板创建带有支持的故障单,并要求取消阻止SMTP。这是为了防止垃圾邮件而实施的。

您的另一个选择是使用第三方邮件服务,如果解决过程太长,则允许端口2525用于邮件,例如mandrill或mailgun。

参考:https://meta.discourse.org/t/digital-ocean-is-blocking-outgoing-mail/66740/24

enter image description here