使用RDS数据库的SMTP邮件系统
SMTP email system using RDS database
上下文是我的代码:
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 数据库检索一系列电子邮件并将它们提供给收件人变量,但它似乎只将电子邮件发送到其中一个电子邮件而不是 both/all 其中。
如果有帮助,这里是 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
您需要遍历所有 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)
上下文是我的代码:
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 数据库检索一系列电子邮件并将它们提供给收件人变量,但它似乎只将电子邮件发送到其中一个电子邮件而不是 both/all 其中。
如果有帮助,这里是 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
您需要遍历所有 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)