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,
],
},