使用sendgrid python计划电子邮件
我正在使用sendgrid()的python模块发送事务性电子邮件。我需要有关语法的帮助,以便在预定时间发送电子邮件。 通用sendgrid文档要求将json修改为“{”send_at:1409348513}”。我相信这个json在sendgrid python中是无法直接访问的。我需要使用python库执行等效操作的语法 我当前的代码与下面复制的代码相同。如果有人能建议如何修改此代码以将其安排在特定时间,例如datetime.dateime.now()+datetime.timedelta(days=1),那就太好了使用sendgrid python计划电子邮件,python,python-2.7,sendgrid,email,Python,Python 2.7,Sendgrid,Email,我正在使用sendgrid()的python模块发送事务性电子邮件。我需要有关语法的帮助,以便在预定时间发送电子邮件。 通用sendgrid文档要求将json修改为“{”send_at:1409348513}”。我相信这个json在sendgrid python中是无法直接访问的。我需要使用python库执行等效操作的语法 我当前的代码与下面复制的代码相同。如果有人能建议如何修改此代码以将其安排在特定时间,例如datetime.dateime.now()+datetime.timedelta(d
导入sendgrid
从sendgrid.helpers.mail导入电子邮件、内容、替换、邮件
将urllib2导入为urllib
def send_email_custom():
sg=sendgrid.SendGridAPIClient(apikey=myApiKey)
from_email=电子邮件(sendEmail)
收件人电子邮件=电子邮件(客户电子邮件)
回复电子邮件=电子邮件(接收电子邮件)
内容=内容(“文本/html”、“简介”)
邮件=邮件(从电子邮件,主题=“嗨!”,到电子邮件=到电子邮件,内容=内容)
mail.personalizations[0]。添加替换(替换(“\u firstName”,firstName))
mail.set\u template\u id(templateId)
尝试:
response=sg.client.mail.send.post(request\u body=mail.get())
除了urllib.HTTPError作为e:
打印(如read())
返回错误
如果response.status\u code>=200且response.status\u code<300:
返回真值
其他:
返回错误
看起来您应该可以通过以下示例来实现这一点。您可以指定所需的所有原始字段。是personalizations
对象的一个组件,因此您可以在该级别定义它,允许您为每个收件人/个性化设置设置不同的发送时间
如果您不需要,也可以设置。谢谢,但这是一种完全不同的方法。它直接在json中填充它。我想应该有一些直观的功能,比如mail.send_at()之类的东西我建议把它发布在github repo上,而不是SOThanks上,这就是我想要的,你能显示有效的代码吗?我一直在运行非常类似的代码,但调度不起作用。
import sendgrid
from sendgrid.helpers.mail import Email, Content, Substitution, Mail
import urllib2 as urllib
def send_email_custom():
sg = sendgrid.SendGridAPIClient(apikey=myApiKey)
from_email = Email(sendEmail)
to_email = Email(custEmail)
reply_to_email = Email(receiveEmail)
content = Content("text/html", "Introduction")
mail = Mail(from_email, subject="Hi!", to_email=to_email, content=content)
mail.personalizations[0].add_substitution(Substitution("_firstName_", firstName))
mail.set_template_id(templateId)
try:
response = sg.client.mail.send.post(request_body=mail.get())
except urllib.HTTPError as e:
print(e.read())
return False
if response.status_code >=200 and response.status_code < 300:
return True
else:
return False