我使用SendGrid从我的基于python的Heroku应用程序发送电子邮件。我可以花大约10分钟到达我的收件箱,但我收到了三份消息,我无法弄清楚原因。以下是相关代码:
import sendgrid
from sendgrid import SendGridError, SendGridClientError, SendGridServerError
sg = sendgrid.SendGridClient('xxx@heroku.com', 'xxx')
message = sendgrid.Mail()
message.add_to('John Doe <xxx@xxx.com>')
message.set_subject('Example')
message.set_html('Body')
message.set_text('Body')
message.set_from('Dark Knight <xxx@xxx.com>')
message.add_attachment('image.jpg', './image.jpg')
status, msg = sg.send(message)
@app.route('/test2')
def test2():
sg.send(message)
return "sent"
当我走到相关路线时,我会被发送到&#39;返回并发送电子邮件,但同样,它发送了三份副本。我不确定为什么。任何帮助都会很棒。
答案 0 :(得分:0)
通过电子邮件发送一个和两个:
status, msg = sg.send(message)
会发送两封电子邮件,然后将status
和msg
设置为响应对象。
电子邮件三:加载路线后sg.send(message)
发送下一封电子邮件。
答案 1 :(得分:0)
我建议你使用sendgrid sendmail api发送邮件。它以高效,快捷的方式发送电子邮件。
答案 2 :(得分:0)
您在代码中呼叫sg.send(message)
三次。
此处调用两次:status, msg = sg.send(message)
- 这将为status
发送一封邮件并记录其对该变量的响应。然后它会再次发送msg
并记录它对该变量的响应。
然后当用户点击/test2
时,再次调用该函数,总共发出三条消息。
以下是如何将其更改为记录响应,但只发送一条消息:
import sendgrid
from sendgrid import SendGridError, SendGridClientError, SendGridServerError
sg = sendgrid.SendGridClient('xxx@heroku.com', 'xxx')
def sendMessage(options):
message = sendgrid.Mail()
message.add_to('John Doe <xxx@xxx.com>')
message.set_subject('Example')
message.set_html('Body')
message.set_text('Body')
message.set_from('Dark Knight <xxx@xxx.com>')
message.add_attachment('image.jpg', './image.jpg')
// send the message and log the results to status
msg = sg.send(message)
return msg
@app.route('/test2')
def test2():
// send the message, pass any options like email address (not required)
status = sendMessage(options)
return status
我在上面添加了一个新函数来发送消息并为其提供一个可选的options
var,因此您可以使用它将消息传递给消息,例如不同的电子邮件地址或主题。< / p>