SendGrid发送多个副本

时间:2015-01-16 15:26:33

标签: python heroku sendgrid

我使用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;返回并发送电子邮件,但同样,它发送了三份副本。我不确定为什么。任何帮助都会很棒。

3 个答案:

答案 0 :(得分:0)

通过电子邮件发送一个和两个: status, msg = sg.send(message)会发送两封电子邮件,然后将statusmsg设置为响应对象。

电子邮件三:加载路线后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>