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.
3 Réponses :
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.
F.Duran thnx pour la réponse
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.
thnx pour la solution
RECIPIENT doit être un tableau de chaînes> ['email1', 'email2']
et >>
Destination={ 'ToAddresses': RECIPIENT },
à
Destination={ 'ToAddresses': [ RECIPIENT, ], },