Неизвестный параметр в пункте назначения: «ReplyToAddresses», должен быть одним из: ToAddresses, CcAddresses, BccAddresses - PullRequest
0 голосов
/ 19 ноября 2018

Если я пытаюсь использовать Boto 3 для отправки электронного письма с SES с заголовком Reply-To, который не совпадает с каким-либо другим заголовком в письме, с помощью сценария, подобного следующему ...

import boto3
client = boto3.client('ses')
client.send_email(
    Destination={
        'ToAddresses': [
            "someone@example.com"
        ],
        'ReplyToAddresses': [
            "someoneelse@example.com"
        ]
    },
    Message={
        'Body': {
            'Text': {
                'Charset': "UTF-8",
                'Data': 'Bla bla bla',
            },
        },
        'Subject': {
            'Charset': "UTF-8",
            'Data': 'Bla bla bla',
        },
    },
    Source="My Company <noreply@example.com>",
)

... тогда я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "/Users/markamery/test.py", line 24, in <module>
    Source="My Company <noreply@shielddx.com>",
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/botocore/client.py", line 320, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/botocore/client.py", line 596, in _make_api_call
    api_params, operation_model, context=request_context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/botocore/client.py", line 632, in _convert_to_request_dict
    api_params, operation_model)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/botocore/validate.py", line 291, in serialize_to_request
    raise ParamValidationError(report=report.generate_report())
botocore.exceptions.ParamValidationError: Parameter validation failed:
Unknown parameter in Destination: "ReplyToAddresses", must be one of: ToAddresses, CcAddresses, BccAddresses

Это не имеет особого смысла для меня.То, что я пытаюсь сделать здесь, кажется наилучшей практикой (см. https://stackoverflow.com/a/14555043/1709587) и, согласно https://forums.aws.amazon.com/thread.jspa?threadID=60093&tstart=0, с 2011 года, вы можете использовать «любой адрес электронной почты» в «Reply-To»).header.

В чем причина этой ошибки? Были ли правила SES снова изменены после публикации этого сообщения на форуме от 2011 года? Является ли ошибка, которую я вижу выше, недокументированным ограничением для учетных записей, которые в песочнице , напримерМой? Или это ошибка - Boto 3 на стороне клиента применяет более строгую проверку ReplyToAddresses, чем сам AWS API?

1 Ответ

0 голосов
/ 19 ноября 2018

В соответствии с документами boto3 вам нужно поместить список адресов для ответа в аргумент вне аргумента Destination. Мне это тоже кажется странным.

send_mail(
    ...,
    Destination={...},
    ReplyToAddresses=[
        'someoneelse@example.com',
])
...