gpt4 book ai didi

python-3.x - 通过Python Google Cloud Function发送电子邮件的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 13:52:50 25 4
gpt4 key购买 nike

我正在尝试编写Python Google Cloud Function,以在每天的同一时间(例如每天的00:00)将自动电子邮件发送到相同的G-mail地址。最简单的方法是什么?我在在线文档中找不到任何在线教程或指南...谢谢!

这是到目前为止我尝试过的方法,但是两种方法似乎都不起作用(出于明显的原因,隐藏了真实的电子邮件地址,密码和API key )

方法1:使用smtplib(函数体)

import smtplib

gmail_user = 'SenderEmailAddress@gmail.com'
gmail_password = 'SenderEmailPassword'

sent_from = gmail_user
to = ['RecipientEmailAddress@gmail.com']
subject = 'Test e-mail from Python'
body = 'Test e-mail body'

email_text = """\
From: %s
To: %s
Subject: %s

%s
""" % (sent_from, ", ".join(to), subject, body)

server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.ehlo()
server.login(gmail_user, gmail_password)
server.sendmail(sent_from, to, email_text)
server.close()
print('Email sent!')

方法2:使用SendGrid API(函数主体)
import os
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail

message = Mail(
from_email='SenderEmailAddress@gmail.com',
to_emails='RecipientEmailAddress@gmail.com',
subject='Sending with Twilio SendGrid is Fun',
html_content='<strong>and easy to do anywhere, even with Python</strong>')

try:
sg = SendGridAPIClient("[SENDGRID API KEY]")
#sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
response = sg.send(message)
print(response.status_code)
print(response.body)
print(response.headers)
except Exception as e:
print(e.message)

最佳答案

使用云功能发送电子邮件的最佳方法是使用电子邮件第三方服务。

GCP为Sendgrid和Mailjet提供折扣,必须通过GCP市场启用这些服务才能申请此优惠。

使用sendgrid进行配置非常简单

  • 激活GCP marketplace上的计划(我使用免费计划,每月12K邮件)
  • Create an api key in sendgrid
  • 验证您的sendgrid帐户电子邮件(使用您收到的电子邮件)

  • 在云功能方面,您需要使用新的sendgrid api key create a variable environment
    EMAIL_API_KEY = your awesome api key
    您可以部署以下示例代码

    requirements.txt:
    sendgrid

    *未指定版本以安装最新可用版本
    def email(request):
    import os
    from sendgrid import SendGridAPIClient
    from sendgrid.helpers.mail import Mail, Email
    from python_http_client.exceptions import HTTPError

    sg = SendGridAPIClient(os.environ['EMAIL_API_KEY'])

    html_content = "<p>Hello World!</p>"

    message = Mail(
    to_emails="[Destination]@email.com",
    from_email=Email('[YOUR]@gmail.com', "Your name"),
    subject="Hello world",
    html_content=html_content
    )
    message.add_bcc("[YOUR]@gmail.com")

    try:
    response = sg.send(message)
    return f"email.status_code={response.status_code}"
    #expected 202 Accepted

    except HTTPError as e:
    return e.message

    要安排您的电子邮件,可以使用 Cloud Scheduler

    中的 Create a service accountfunctions.invoker permission
  • Create new Cloud scheduler job
  • 以cron格式指定频率。
  • 指定HTTP作为目标类型。
  • 像往常一样添加您的云函数和方法的URL。
  • 从Auth header 下拉列表中选择 token OIDC
  • 在“服务帐户”文本框中添加服务帐户电子邮件。
  • 关于python-3.x - 通过Python Google Cloud Function发送电子邮件的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62282170/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com