Отправка почты через облачную функцию через изменения в облачном хранилище - PullRequest
1 голос
/ 14 января 2020

Я пытался настроить облачные функции для отправки писем всякий раз, когда файл помещается в одно из наших облачных хранилищ в GCP, без использования сторонних инструментов. Я ознакомился с приведенными здесь понятиями и убедился, что электронная почта моего отправителя уже зарегистрирована как авторизованный отправитель.

https://cloud.google.com/appengine/docs/standard/python/mail/sending-mail-with-mail-api

requirements.txt с добавленными ниже значениями:

google-cloud-storage==1.23.0
googleapis-common-protos==1.3.5
google-api-python-client

в файле требований. Но все равно получаю ту же ошибку.

Однако, когда я пытался использовать приведенные ниже сценарии, и это заканчивалось этой ошибкой:

ModuleNotFoundError: No module named 'google.appengine' .

Оценить Ваши предложения и помощь заранее.


from google.appengine.api import app_identity
from google.appengine.api import mail
import webapp2


def send_approved_mail(sender_address):
    # [START send_mail]
    mail.send_mail(sender=sender_address,
                   to="Albert Johnson <Albert.Johnson@example.com>",
                   subject="Your account has been approved",
                   body="""Dear Albert:
Your example.com account has been approved.  You can now visit
http://www.example.com/ and sign in using your Google Account to
access new features.
Please let us know if you have any questions.
The example.com Team
""")
    # [END send_mail]


class SendMailHandler(webapp2.RequestHandler):
    def get(self):
        send_approved_mail('{}@appspot.gserviceaccount.com'.format(
            app_identity.get_application_id()))
        self.response.content_type = 'text/plain'
        self.response.write('Sent an email to Albert.')


app = webapp2.WSGIApplication([
    ('/send_mail', SendMailHandler),
], debug=True)

1 Ответ

0 голосов
/ 14 января 2020

Вы захотите интегрироваться со сторонней службой электронной почты, такой как Sendgrid, и структурировать свою облачную функцию как облачную функцию, например:

# using SendGrid's Python Library
# https://github.com/sendgrid/sendgrid-python
import os
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail

sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))

def send_mail(data, context):
    message = Mail(
        from_email='from_email@example.com',
        to_emails='to@example.com',
        subject='This is the subject',
        html_content='This is the content'
    )
    response = sg.send(message)

См. https://cloud.google.com/functions/docs/tutorials/sendgrid для более подробной информации.

...