【问题标题】:SMTP email system using RDS database使用 RDS 数据库的 SMTP 电子邮件系统
【发布时间】:2022-02-08 20:25:43
【问题描述】:

这里是我的代码:

import pymysql
import os
import smtplib
from email.message import EmailMessage

# RDS config
endpoint = '**************'
username = '*****'
password = '*********'
database_name = '**********'

#connection config

connection = pymysql.connect(host=endpoint,user=username,passwd=password,db=database_name)

def handler(event, context):
    cursor = connection.cursor()
    cursor.execute('SELECT `Presenters`.Email FROM `Main` INNER JOIN `Presenters` ON `Main`.`PresenterID` = `Presenters`.`PresentersID` WHERE `Main`.`Read Day` ="Wednesday"')

    rows = cursor.fetchall()
    
    for row in rows:
        print("{0}".format(row[0]))
    
    EMAIL_ADDRESS = "***********"
    EMAIL_PASSWORD = "*********"
        
    msg = EmailMessage()
    msg['Subject'] = "***********"
    msg['From'] = EMAIL_ADDRESS
    msg['To'] = ["{0}".format(row[0]),]
        
    msg.set_content('**************')
        
    with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
        smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
        smtp.send_message(msg)

系统工作正常,主要是 mysql 查询从 RDS 数据库中检索一系列电子邮件并将它们提供给收件人变量,但它似乎只向其中一个电子邮件发送电子邮件,而不是两个/全部。

如果有帮助,这里是 lambda 函数的输出日志:

Test Event Name
test

Response
null

Function Logs
START RequestId: cd5e4bd8-28fc-4a0f-af0c-5f8608b46a57 Version: $LATEST
placeholder@email.example
placeholder@email.example
END RequestId: cd5e4bd8-28fc-4a0f-af0c-5f8608b46a57
REPORT RequestId: cd5e4bd8-28fc-4a0f-af0c-5f8608b46a57  Duration: 2036.07 ms    Billed Duration: 2037 ms    Memory Size: 128 MB Max Memory Used: 43 MB  Init Duration: 153.63 ms

Request ID
cd5e4bd8-28fc-4a0f-af0c-5f8608b46a57

【问题讨论】:

    标签: python amazon-web-services aws-lambda smtp amazon-rds


    【解决方案1】:

    您需要遍历所有rows 以向每个row 中定义的收件人发送电子邮件。目前,您使用单个row 的数据来发送一封电子邮件。以下应该对您有用-

    def handler(event, context):
        cursor = connection.cursor()
        cursor.execute('SELECT `Presenters`.Email FROM `Main` INNER JOIN `Presenters` ON `Main`.`PresenterID` = `Presenters`.`PresentersID` WHERE `Main`.`Read Day` ="Wednesday"')
    
        rows = cursor.fetchall()
        
        for row in rows:
            print("{0}".format(row[0]))
        
        EMAIL_ADDRESS = "***********"
        EMAIL_PASSWORD = "*********"
    
        for row in rows:
            msg = EmailMessage()
            msg['Subject'] = "***********"
            msg['From'] = EMAIL_ADDRESS
            msg['To'] = ["{0}".format(row[0]),]
                
            msg.set_content('**************')
                
            with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
                smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
                smtp.send_message(msg)
    
    

    【讨论】:

    • 谢谢你我试试看!
    猜你喜欢
    • 1970-01-01
    • 2021-03-26
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    相关资源
    最近更新 更多