如何从lambda aws python在电子邮件正文中传递变量

2024-09-30 18:35:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过在有效负载内的html正文中传递变量(在send_email()中)从lambda发送电子邮件。我尝试使用+str(latesturgency)+{latestimpact}。这不起作用。我不熟悉lambda和python

我怎样才能解决这个问题

import json
import logging
import re
import http.client
import mimetypes

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)


def send_email(email,latestdescription,latestservice,latestimpact,latesturgency):
    
    conn = http.client.HTTPSConnection("mail.us-east-1.aws.cloud.bmw")
   
    payload = {
        "from":"xxx@yyy.com",
        "to": "xxx@yyy.com",
        "subject": "Test mail","textbody": "body",
        "htmlbody": "<h3>Test body!Please create a +str(latesturgency)+ priority ticket to {latestservice}  , with below message:{latestdescription}</h3>"
        
    }
    print(payload)
    headers = {
     'Content-Type': 'application/json'
    }
    data=json.dumps(payload)
    print(data)
    conn.request("POST", "", data, headers)
    res = conn.getresponse()
    data = res.read()
    print(data.decode("utf-8"))
    print("done")



def lambda_handler(event, context):

    empidemployee= event['currentIntent']["slots"]["empidemployee"]
    latestdescription= event['currentIntent']["slots"]["latestdescription"]
    latestservice= event['currentIntent']["slots"]["latestservice"]
    latestimpact= event['currentIntent']["slots"]["latestimpact"]
    latesturgency= event['currentIntent']["slots"]["latesturgency"]
    email=event['currentIntent']["slots"]["email"]

    send_email(email,latestdescription,latestservice,latestimpact,latesturgency)
   

Tags: lambdaimporteventsendjsondataemailservice
1条回答
网友
1楼 · 发布于 2024-09-30 18:35:32

您可以使用format函数对字符串执行此操作,我在下面添加了此函数

import json
import logging
import re
import http.client
import mimetypes

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)


def send_email(email,latestdescription,latestservice,latestimpact,latesturgency):
    
    conn = http.client.HTTPSConnection("mail.us-east-1.aws.cloud.bmw")
   
    payload = {
        "from":"xxx@yyy.com",
        "to": "xxx@yyy.com",
        "subject": "Test mail","textbody": "body",
        "htmlbody": "<h3>Test body!Please create a {} priority ticket to {}, with below message:{}</h3>".format(latesturgency, latestservice, latestdescription)
        
    }
    print(payload)
    headers = {
     'Content-Type': 'application/json'
    }
    data=json.dumps(payload)
    print(data)
    conn.request("POST", "", data, headers)
    res = conn.getresponse()
    data = res.read()
    print(data.decode("utf-8"))
    print("done")



def lambda_handler(event, context):

    empidemployee= event['currentIntent']["slots"]["empidemployee"]
    latestdescription= event['currentIntent']["slots"]["latestdescription"]
    latestservice= event['currentIntent']["slots"]["latestservice"]
    latestimpact= event['currentIntent']["slots"]["latestimpact"]
    latesturgency= event['currentIntent']["slots"]["latesturgency"]
    email=event['currentIntent']["slots"]["email"]

    send_email(email,latestdescription,latestservice,latestimpact,latesturgency)

使用{}表示法指示变量应替换的位置,然后在字符串按要使用的顺序传入变量后使用.format()

就你而言,现在是这样

"<h3>Test body!Please create a {} priority ticket to {}, with below message:{}</h3>".format(latesturgency, latestservice, latestdescription)

有关format函数的更多信息,请阅读文档

相关问题 更多 >