3
votes

Comment envoyer des e-mails à plusieurs destinataires via AWS SES

Bonjour les gars, j'essaie d'envoyer un e-mail à plusieurs utilisateurs via AWS SES en utilisant Python, mais chaque fois que j'essaie d'envoyer un e-mail, j'ai une erreur: Adresse illégale

Voici mon code:

def emailServiceForCustomerInformation(self, emailSubject, customerLicenseMessage, installation_name):
    # logger = ToolsLogger.getOrCreateLogger(current_user.keyspace)
    logger = ToolsLogger.getOrCreateRootLogger()

    logger.info("Email service For Customer is started")

      record = int(recordCount)
    # print("emailRcord-",record)

    # This address must be verified with Amazon SES.
    SENDER = "Snehil singh<snehil@codedata.io>"

    # is still in the sandbox, this address must be verified.

    recipients = ["cosmoandysysmo@gmail.com","snehil@codedata.io"]
    RECIPIENT = ", ".join(recipients)

    # If necessary, replace us-east-1 with the AWS Region currently using for Amazon SES.
    AWS_REGION = "us-east-1"

    # The subject line for the email.
    SUBJECT = emailSubject

    BODY_TEXT = (customerLicenseMessage + ' ''For InstallationName-'+ installation_name)

    # The character encoding for the email.
    CHARSET = "UTF-8"

    client = boto3.client('ses', region_name=AWS_REGION,
                          aws_access_key_id=config[os.environ['CONFIG_TYPE']].S3_ACCESS_KEY,
                          aws_secret_access_key=config[os.environ['CONFIG_TYPE']].S3_ACCESS_SECRET_KEY,
                          config=Config(signature_version='s3v4'))

    is_success = True
    # Try to send the email.
    try:
        # Provide the contents of the email.
        response = client.send_email(
            Destination={
                'ToAddresses': [
                    RECIPIENT,
                ],
            },
            Message={
                'Body': {
                    'Text': {
                        'Charset': CHARSET,
                        'Data': BODY_TEXT,
                    },
                },
                'Subject': {
                    'Charset': CHARSET,
                    'Data': SUBJECT,
                },
            },
            Source=SENDER,
            # If you are not using a configuration set, comment or delete the
            # following line
            #         ConfigurationSetName=CONFIGURATION_SET,
        )
    # Display an error if something goes wrong.
    except ClientError as e:
        logger.exception(e)
        print(e.response['Error']['Message'])
        is_success = False
    else:
        # print("Email sent! Message ID:"),
        # print(response['MessageId'])
        logger.info("Email service is Completed and send to the mail")

    return is_success

J'ai cherché sur Internet mais la réponse n'a pas aidé.C'est une autre façon dont j'ai essayé https://www.jeffgeerling.com/blogs/jeff-geerling/sending-emails-multiple mais cela n'est pas non plus utile s'il vous plaît aidez-moi où je ' m fais mal où dois-je le modifier s'il vous plaît cingler moi si vous avez des questions à ce sujet ... merci d'avance.


0 commentaires

3 Réponses :


2
votes

Dans la documentation de boto3 SES send_email :

BccAddresses.member.N

    The BCC: field(s) of the message.

    Type: Array of strings

    Required: No
CcAddresses.member.N

    The CC: field(s) of the message.

    Type: Array of strings

    Required: No
ToAddresses.member.N

    The To: field(s) of the message.

    Type: Array of strings

    Required: No

Et si vous lisez la documentation de l'appel de l'API SendEmail SES , elle vous indique que l' objet Destination est:

response = client.send_email(
    Source='string',
    Destination={
        'ToAddresses': [
            'string',
        ],
        'CcAddresses': [
            'string',
        ],
        'BccAddresses': [
            'string',
        ]
    },

En résumé: ne joignez pas l'adresse pour construire RECIPIENT. RECIPIENT doit être un tableau (une liste, en Python) de chaînes, où chaque chaîne est une adresse e-mail.


1 commentaires

F.Duran thnx pour la réponse



3
votes

Il me semble que vous devriez passer la chaîne «destinataire», pas la chaîne RECIPENT. Essayez quelque chose comme ceci:

Destination={'ToAddresses':recipients}

Il semble s'attendre à un tableau, pas à une liste de chaînes séparées par des virgules.


1 commentaires

thnx pour la solution



0
votes

RECIPIENT doit être un tableau de chaînes> ['email1', 'email2']

et >>

Destination={
            'ToAddresses': RECIPIENT
        },

à

Destination={
            'ToAddresses': [
                RECIPIENT,
            ],
        },


0 commentaires