如何将sengrid链接到flask中的联系人表单以转发电子邮件

yptwkmov  于 2021-09-08  发布在  Java
关注(0)|答案(0)|浏览(302)

我正在编写一个web应用程序,并尝试使用sendgrid处理电子邮件传递服务。
我正在 flask 里写申请书。
现在我有一个联系表格,我的问题是,只有在我使用sendgrid从预先批准的电子邮件地址发送电子邮件时,才会发送电子邮件。显然,这并不好,因为其他填写电子邮件表单的人不会让它通过。
以下是我的代码:
路线

app.config['MAIL_SERVER'] = 'smtp.sendgrid.net'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = 'apikey'
app.config['MAIL_PASSWORD'] = os.environ.get('SENDGRID_API_KEY')
app.config['MAIL_DEFAULT_SENDER'] = os.environ.get('MAIL_DEFAULT_SENDER')

@app.route('/contact', methods=['GET', 'POST'])
def contactpage():
    if request.method == 'POST':
        print("Message sent")
        print(request.form.to_dict())
        m = message(request.form.to_dict())
        m.send()
    title = "Jonathan Bechtel contact form"
    description = "Contact Jonathan Bechtel with questions about teaching or working with him"
    return render_template("contact.html",
                            title=title,
                            description=description)

以下是我实际发送电子邮件的代码:

import os
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail
class message():

    def __init__(self, message_data):
        for key in message_data:
            print(key, message_data[key])
            setattr(self, key, message_data[key])

    def send(self):
        message      = Mail(
        from_email   = self.email,
        to_emails    = 'jonathanbechtel@gmail.com',
        subject      = 'Sample Email Message',
        html_content = f'<strong>From: {self.email}</strong><br><strong>Reason: {self.reason}</strong><br><strong>Message:</strong>{self.message}')
        try:
            sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
            response = sg.send(message)
        except Exception as e:
            print(e)

如果我设定 from 将我的联系方式中的地址添加到我自己的邮箱中,电子邮件工作正常。但是,如果我使用其他任何一个,消息不会通过并生成 403 状态代码。
我认为这意味着我没有使用api的正确部分,但不确定从哪里开始。
非常感谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题