为了账号安全,请及时绑定邮箱和手机立即绑定

用于从迪纳摩DB事件的响应中以 HTML 格式发送电子邮件正文的 AWS

用于从迪纳摩DB事件的响应中以 HTML 格式发送电子邮件正文的 AWS

慕哥6287543 2022-09-13 17:49:53
我们正在尝试创建一个 AWS Lambda 函数,以创建一封包含 HTML 正文的电子邮件,以提醒团队有关已更改的记录。为了实现这一点,我们创建了一个带有Python的Lambda函数,该函数从事件的响应中捕获变量并传递到HTML。我下面的代码在从HTML到python的变量方面存在问题。你能帮我解决它吗?由于电子邮件输出只是HTML中提到的字符串。一般来说,我应该得到分配给它的变量。import boto3import jsonfrom datetime import datetimeimport smtplib  import email.utilsfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextdef lambda_handler(event, context):    #print(event)    RecordInfo = event['Records']    RecordDetails = RecordInfo[0]    EventName = RecordDetails['eventName']    Dyna = RecordDetails['dynamodb']    Modtime = Dyna['ApproximateCreationDateTime']    ModifiedTime=datetime.fromtimestamp(Modtime).strftime("%B %d, %Y %I:%M:%S")    if (EventName == 'MODIFY'):        OldData = Dyna['OldImage']        OldAppKey=OldData['Application']        OldApp=OldAppKey['S']        OldAppServerKey=OldData['App_Server']        OldAppServer=OldAppServerKey['S']        OldAppUserKey=OldData['App_User']        OldAppUser=OldAppUserKey['S']        OldAppIPKey=OldData['App_IP']        OldAppIP=OldAppIPKey['S']        OldAppPwdKey=OldData['App_Pwd']        OldAppPwd=OldAppPwdKey['S']        OldAppPortKey=OldData['App_Port']        OldAppPort=OldAppPortKey['S']        #If Eventname is 'Modify' then above inserted value of Sub will be overridden        # The subject line of the email.        SUBJECT = "Table Name:DBTest - Updated on " + ModifiedTime        Message1 = Message1 + "\nOld Record Details:\n" + "Application:" + OldApp + "\tApp_IP:" + OldAppIP + "\tApp_User:" + OldAppUser + "\tApp_Pwd:" + OldAppPwd + "\tApp_Port:" + OldAppPort        # The HTML body of the email.
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

看起来您希望使用如下所示的字符串来替换变量:


<td class="cell">{OldApp}</td>

要在 Python 3.6+ 中执行此操作,您应该使用 ,例如:f-string


BODY_HTML = f"...<td class="cell">{OldApp}</td>..."

请注意开头的引号,它告诉 Python 替换 中包含的表达式。f{curly brackets}


此外,该语句不应位于此变量赋值中:print()


BODY_HTML = BODY_HTML + print ("...

另外一些提示.


您可以缩短此时间:


RecordInfo = event['Records']

RecordDetails = RecordInfo[0]

EventName = RecordDetails['eventName']

到:


EventName = event['Records'][0]['eventName']

同样,您可以缩短:


OldAppIPKey=OldData['App_IP']

OldAppIP=OldAppIPKey['S']

到:


OldAppIP=OldData['App_IP']['S']


查看完整回答
反对 回复 2022-09-13
  • 1 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号