Я отправляю письмо от Aws SES, используя boto3. Вот пример кода Python. Проблема в том, что уведомление SNS не включает адрес получателя в Открыть , Нажмите уведомление о событии. Я получаю точно такое же уведомление в событии Open / Click, разница только в отметке времени. Поэтому я не могу знать, какой получатель открыт или нажал на это письмо. Однако адрес получателя включен в Доставка уведомление. Поэтому я предполагаю, что в событии Open / Click должна быть возможность получить адрес получателя. Моя цель - отправить одно письмо нескольким получателям, используя скрытую копию, и точно знать, кто получил это письмо и открыл его или нет. Что мне делать, я на правильном пути?
# ref: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-using-sdk-python.html
import os
import boto3
from botocore.exceptions import ClientError
from dotenv import load_dotenv
load_dotenv()
AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY = os.getenv("AWS_SECRET_ACCESS_KEY")
SENDER = "My Name <myemail@gmail.com>"
CONFIGURATION_SET = "my-config-set"
AWS_REGION = "us-west-2"
SUBJECT = "Amazon SES Test (SDK for Python)"
# The email body for recipients with non-HTML email clients.
BODY_TEXT = ("Amazon SES Test (Python)\r\n"
"This email was sent with Amazon SES using the "
"AWS SDK for Python (Boto)."
)
# The HTML body of the email.
BODY_HTML = """<html>
<head></head>
<body>
<h1>1 - Amazon SES Test (SDK for Python)</h1>
<p>This email was sent with
<a href='https://aws.amazon.com/ses/'>Amazon SES</a> using the
<a href='https://aws.amazon.com/sdk-for-python/'>
AWS SDK for Python (Boto)</a>.</p>
</body>
</html>
"""
# The character encoding for the email.
CHARSET = "UTF-8"
# Create a new SES resource and specify a region.
client = boto3.client('ses',region_name=AWS_REGION)
# Try to send the email.
try:
#Provide the contents of the email.
response = client.send_email(
Destination={
'ToAddresses': [
# RECIPIENT,
"myemailaddress1@gmail.com"
],
'BccAddresses': [
'myemailaddress2@gmail.com'
],
},
Message={
'Body': {
'Html': {
'Charset': CHARSET,
'Data': BODY_HTML,
},
'Text': {
'Charset': CHARSET,
'Data': BODY_TEXT,
},
},
'Subject': {
'Charset': CHARSET,
'Data': SUBJECT,
},
},
Source=SENDER,
ConfigurationSetName=CONFIGURATION_SET,
)
# Display an error if something goes wrong.
except ClientError as e:
print(e.response['Error']['Message'])
else:
print("Email sent! Message ID:"),
print(response['MessageId'])