根据如何从Azure函数应用程序发送电子邮件,我们无法直接从Azure函数发送电子邮件,因此我们使用SendGrid API来发送电子邮件。(SendGrid对我们来说运作良好,并且我们可以通过我们的Azure订阅获得免费帐户)
虽然大多数电子邮件都能正常发送,但仍有少数未被投递。SendGrid活动记录显示其中的几个状态是
虽然大多数电子邮件都能正常发送,但仍有少数未被投递。SendGrid活动记录显示其中的几个状态是
Block
,详细的错误消息为:unable to get mx info: failed to get IPs from PTR record: lookup <nil>: unrecognized address
由于大多数邮件都已发送成功,我们认为问题不在于我们的代码。我们已经按照SendGrid域身份验证步骤进行了操作,验证了我们的域名,将DKIM密钥添加到了DNS中,并将SendGrid主机添加到了SPF记录中。但是出现了一些问题,而我们似乎无法在SendGrid帮助文件中找到有关错误的任何信息。
我们正在使用的代码(Python)大部分是来自SendGrid Python示例,以防有助于解决问题,但是当我们发送时不会报告任何错误。
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail
def sendEmail(toaddress, subject, message):
logging.info("Sending email to <%s> - %s", toaddress, subject)
message = Mail(
from_email=settings.emailFrom(),
to_emails=toaddress,
subject=subject,
plain_text_content=message)
try:
sg = SendGridAPIClient(settings.sendgridAPIKey())
response = sg.send(message)
logging.info("Email sent via SendGrid: %d - %s", response.status_code, response.body)
except Exception as e:
logging.error(e.message)