我們正在嘗試創建一個 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
1 回答

茅侃侃
TA貢獻1842條經驗 獲得超21個贊
看來您希望用這樣的字符串替換變量:
<td class="cell">{OldApp}</td>
要在 Python 3.6+ 中執行此操作,您應該使用f-string
,例如:
BODY_HTML = f"...<td class="cell">{OldApp}</td>..."
請注意f
開頭引號之前的內容,它告訴 Python 替換{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']
- 1 回答
- 0 關注
- 106 瀏覽
添加回答
舉報
0/150
提交
取消