python 发送重复邮件

qkf9rpyu  于 2022-12-28  发布在  Python
关注(0)|答案(1)|浏览(168)

我在python中创建了一个脚本来发送带有附件的电子邮件。我把它放在databricks中,并把它放在一个时间表中。当我手动运行这个函数时,它只发送一封电子邮件,但当它按时间表运行时,它会发送给每个收件人。虽然这听起来像是一个时间表问题,但我相信这是一个代码问题--我在某个时候能够让它工作,但现在它又开始发送了。
如果有人能看一下下面的代码,看看他们是否能找出为什么它会重复,这将是不胜感激的!

from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from datetime import date

def SendEmail(recipient, subject,message_records,attach,cc,bcc,df):
  server = smtplib.SMTP ('smtp.sendgrid.net', 587) # check server and port with your provider
  server.ehlo()
  server.starttls()
  server.login("apikey", dbutils.secrets.get(scope = "XXXX", key = "XXXX")) # insert secret name
  sender = dbutils.secrets.get(scope = "XXXX", key = "XXXX") # insert secret name
  msg = MIMEMultipart()
  msg['Subject'] = subject
  msg['From'] = "noreply@noreply.com"

  msg['cc'] =  ", ".join([cc])
  msg['To'] = recipient
  rcpt =  bcc.split(",") +cc.split(",") + [recipient]
  message = """
<html>
  <body>
       Good morning, <br> <br>
       
     """+message_records+"""<br> <br>
       
       Thank you and have a wonderful day!
  </body>
</html>
"""
  if attach==1:
    msg.attach(MIMEText(message,'html'))
    filename = "ASN-" + str(date.today())+'.csv'
    attachment = MIMEApplication(df.to_csv(index=False))
    attachment["Content-Disposition"] = 'attachment; filename=" {}"'.format(filename)
    msg.attach(attachment)
  else:
    msg.attach(MIMEText(message,'html'))
    
  server.sendmail(sender, rcpt, msg.as_string())
  server.close()```
nuypyhwy

nuypyhwy1#

我建议你看一下python的SENDGRID库,它使用了从服务中获取的API密钥,并且是专门为这个服务构建的。
https://docs.sendgrid.com/for-developers/sending-email/v3-python-code-example
看看这段代码是否产生了您所看到的相同的重复问题。
如果我没记错的话,发送网格跟踪发送的邮件信息。确保“收件人”列表没有重复的地址。
我看不出上面的代码有任何明显的问题。
这是PyPi的链接,有很多关于用法的例子。
https://pypi.org/project/sendgrid/

相关问题