Codificación de email con acentos y eñes.
Publicado por Jose A. (12 intervenciones) el 05/12/2021 19:56:13
Hola canal,
Tengo que enviar una serie de emails,
Código:
class Mail:
def __init__(self):
self.port = 465
self.smtp_server_domain_name = "smtp.gmail.com"
self.sender_mail = "sort*******@gmail.com"
self.password = "*******"
def send(self, subject, content):
ssl_context = ssl.create_default_context()
service = smtplib.SMTP_SSL(self.smtp_server_domain_name, self.port, context=ssl_context)
service.command_encoding
90 service.login(self.sender_mail, self.password)
91 emails = list()
92 for i in range(45,50):
93 #print (lineas[i].replace('\n','')) #'lineas' contiene los emails destino
94 if lineas[i][:1] == '1':
95 emails.append(lineas[i][1:])
96 for email in emails:
97 result = service.command_encoding='utf8'
98 result = service.sendmail(self.sender_mail, email,f"Subject:{subject}\n{content}")
99 service.quit()
100 print ('ENVIADOS.-')
pero cuando el cuerpo tiene acentos o eñes, me arroja el siguiente mensaje de error :
File "D:\Sort\python\sort\Sort-cion.py", line 98, in send
result = service.sendmail(self.sender_mail, email,f"Subject:{subject}\n{content}")
File "C:\Users\Jose\AppData\Local\Programs\Python\Python39\lib\smtplib.py", line 870, in sendmail
msg = _fix_eols(msg).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\xf3' in position 31: ordinal not in range(128)
He buscado por aqui y por allá, sin ningún éxito y haciendo otras pruebas por mi cuenta, con el mismo resultado. Os agradeceria una orientación o si os a ocurrido alguien y la forma de solucionarlo.
Gracias anticipadas.
Tengo que enviar una serie de emails,
Código:
class Mail:
def __init__(self):
self.port = 465
self.smtp_server_domain_name = "smtp.gmail.com"
self.sender_mail = "sort*******@gmail.com"
self.password = "*******"
def send(self, subject, content):
ssl_context = ssl.create_default_context()
service = smtplib.SMTP_SSL(self.smtp_server_domain_name, self.port, context=ssl_context)
service.command_encoding
90 service.login(self.sender_mail, self.password)
91 emails = list()
92 for i in range(45,50):
93 #print (lineas[i].replace('\n','')) #'lineas' contiene los emails destino
94 if lineas[i][:1] == '1':
95 emails.append(lineas[i][1:])
96 for email in emails:
97 result = service.command_encoding='utf8'
98 result = service.sendmail(self.sender_mail, email,f"Subject:{subject}\n{content}")
99 service.quit()
100 print ('ENVIADOS.-')
pero cuando el cuerpo tiene acentos o eñes, me arroja el siguiente mensaje de error :
File "D:\Sort\python\sort\Sort-cion.py", line 98, in send
result = service.sendmail(self.sender_mail, email,f"Subject:{subject}\n{content}")
File "C:\Users\Jose\AppData\Local\Programs\Python\Python39\lib\smtplib.py", line 870, in sendmail
msg = _fix_eols(msg).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\xf3' in position 31: ordinal not in range(128)
He buscado por aqui y por allá, sin ningún éxito y haciendo otras pruebas por mi cuenta, con el mismo resultado. Os agradeceria una orientación o si os a ocurrido alguien y la forma de solucionarlo.
Gracias anticipadas.
Valora esta pregunta


0