以下是将我们提供的文本翻译成中文的结果:
标题: “毕业设计项目解决方案” 权重: 75
aws sesv2 create-configuration-set-event-destination \
--configuration-set-name HealthWellnessConfigSet \
--event-destination-name OpensPerCampaign \
--event-destination '{
"Enabled": true,
"MatchingEventTypes": ["OPEN"],
"CloudWatchDestination": {
"DimensionConfigurations": [
{
"DimensionName": "campaign",
"DimensionValueSource": "MESSAGE_TAG",
"DefaultDimensionValue": "January"
}
]
}
}'
a. 一月活动
aws sesv2 send-email \
--from-email-address sender@example.com \
--destination ToAddresses=recipient@example.com\
--content '{"Simple": {"Subject": {"Data": "测试电子邮件","Charset": "UTF-8"},"Body": {"Text": {"Data": "这是使用AWS CLI SESv2发送的测试电子邮件。","Charset": "UTF-8"},"Html": {"Data": "这是使用AWS CLI SESv2发送的测试电子邮件。","Charset": "UTF-8"}}}}' \
--configuration-set HealthWellnessConfigSet \
--email-tags Name=campaign,Value=January
b. 二月活动
aws sesv2 send-email \
--from-email-address sender@example.com \
--destination ToAddresses=recipient@example.com\
--content '{"Simple": {"Subject": {"Data": "测试电子邮件","Charset": "UTF-8"},"Body": {"Text": {"Data": "这是使用AWS CLI SESv2发送的测试电子邮件。","Charset": "UTF-8"},"Html": {"Data": "这是使用AWS CLI SESv2发送的测试电子邮件。","Charset": "UTF-8"}}}}' \
--configuration-set HealthWellnessConfigSet \
--email-tags Name=campaign,Value=February
travel_tips_weekly_deals.html
<!DOCTYPE html>
<html>
<head>
<title>旅游小贴士每周优惠</title>
</head>
<body>
<h1>欢迎来到旅游小贴士每周优惠!</h1>
<p>查看我们合作伙伴提供的这些令人惊叹的旅游优惠:</p>
<ul>
<li>
<a href="{{traveldeal1}}" ses:tags="partner:PartnerA">旅游优惠1</a>
</li>
<li>
<a href="{{traveldeal2}}" ses:tags="partner:PartnerB">旅游优惠2</a>
</li>
<li>
<a href="{{traveldeal3}}" ses:tags="partner:PartnerC">旅游优惠3</a>
</li>
</ul>
</body>
</html>
aws sesv2 create-email-template --cli-input-json "$(printf '{"TemplateName": "TravelTipsWeeklyDeals", "TemplateContent": {"Subject": "旅游小贴士每周优惠", "Html": "%s"}}' "$(sed -e ':a' \
-e 'N' \
-e '$!ba' \
-e 's/\n/\\n/g' \
-e 's/"/\\"/g' \
travel_tips_weekly_deals.html)")"
aws sesv2 create-configuration-set-event-destination \
--configuration-set-name TravelTipsConfigSet \
--event-destination-name PartnerClick \
--event-destination '{
"Enabled": true,
"MatchingEventTypes": ["CLICK"],
"CloudWatchDestination": {
"DimensionConfigurations": [
{
"DimensionName": "partner",
"DimensionValueSource": "LINK_TAG",
"DefaultDimensionValue": "-"
}
]
}
}'
aws cloudwatch put-dashboard --dashboard-name TravelAgencyTracking --dashboard-body '{
"widgets": [
{
"type": "metric",
"x": 0,
"y": 0,
"width": 24,
"height": 6,
"properties": {
"metrics": [
["AWS/SES", "Click", "partner", "PartnerA", {"label": "合作伙伴A", "stat": "Sum"}],
["AWS/SES", "Click", "partner", "PartnerB", {"label": "合作伙伴B", "stat": "Sum"}],
["AWS/SES", "Click", "partner", "PartnerC", {"label": "合作伙伴C", "stat": "Sum"}]
],
"view": "singleValue",
"region": "<your-region>",
"title": "合作伙伴指标",
"period": 86400
}
}
]
}'
.header
和.header::after
选择器中的position: absolute;
和position: relative;
属性可能无法正常工作,导致"独家优惠"标签位置错误或根本不显示。h1
元素的blink
效果的@keyframes
动画在Gmail中可能无法工作,因此闪烁效果可能不会显示。@media
查询可能不受支持,font-family
更改可能不会应用。最终模板(删除了无效的html/css标记并添加了传递数组逻辑)如下:
<!DOCTYPE html>
<html>
<head>
<title>旅游小贴士每周优惠</title>
<style>
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 1.5;
color: #333;
margin: 0;
padding: 20px;
background-color: #f5f5f5;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
}
.content {
background-color: #fff;
border-radius: 10px;
padding: 20px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
max-width: 600px;
width: 100%;
display: grid;
grid-template-columns: 1fr;
}
.header {
background-color: #3498db;
padding: 20px;
text-align: center;
border-radius: 5px;
margin-bottom: 20px;
position: relative;
}
h1 {
font-size: 24px;
font-weight: bold;
color: #fff;
margin: 0;
animation: 2s blink infinite;
}
p {
margin-bottom: 10px;
}
ul {
list-style: none;
padding: 0;
margin-bottom: 20px;
}
li {
margin-bottom: 10px;
}
a {
text-decoration: none;
color: #fff;
font-weight: bold;
background-color: #3498db;
display: inline-block;
padding: 10px 20px;
border-radius: 5px;
transition: background-color 0.3s ease;
}
a:hover {
background-color: #2c3e50;
}
</style>
</head>
<body>
<div class="content">
<div class="header">
<h1>欢迎来到旅游小贴士每周优惠!</h1>
</div>
<p>查看我们合作伙伴提供的这些令人惊叹的旅游优惠:</p>
<ul>
{{#each travel_deals}}
<li>
<a href="{{url}}" ses:tags="{{sestag}}">{{name}}</a>
</li>
{{/each}}
</ul>
</div>
</body>
</html>
import json
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('EngagementTable')
def lambda_handler(event, context):
for record in event['Records']:
sns_message = json.loads(record['body'])
ses_event = json.loads(sns_message['Message'])
if ses_event["eventType"] in ("Open", "Click"):
email_address = ses_event["mail"]["destination"][0]
timestamp = ses_event["mail"]["timestamp"]
update_engagement(email_address, timestamp)
def update_engagement(email, timestamp):
table.update_item(
Key={
'email': email
},
UpdateExpression='SET last_engagement_date = :val1',
ExpressionAttributeValues={
':val1': timestamp
}
)
const AWS = require("aws-sdk");
const dynamodb = new AWS.DynamoDB.DocumentClient();
const tableName = "EngagementTable";
exports.handler = async (event) => {
for (const record of event.Records) {
const snsMessage = JSON.parse(record.body);
const sesEvent = JSON.parse(snsMessage.Message);
if (["Open", "Click"].includes(sesEvent.eventType)) {
const emailAddress = sesEvent.mail.destination[0];
const timestamp = sesEvent.mail.timestamp;
await updateEngagement(emailAddress, timestamp);
}
}
};
async function updateEngagement(email, timestamp) {
const params = {
TableName: tableName,
Key: {
email: email,
},
UpdateExpression: "SET last_engagement_date = :val1",
ExpressionAttributeValues: {
":val1": timestamp,
},
};
await dynamodb.update(params).promise();
}