Я новичок, пытаюсь отправить персонализированное письмо с помощью Python. Мне нужно отправить числовой код вместе с сообщением, и я использую этот код.
import smtplib
import ssl
def send_email(receive, pCode):
port = 465
sender = "mail@gmail.com"
password = "passw"
receive = sender # For test purposes
recipients = [{"receive": receive, "pCode": pCode}] # Also for test purposes
message = """
Subject: SUBJ
CODE:
{pCode}
"""
context = ssl.create_default_context()
print("Starting to send")
with smtplib.SMTP_SSL("smtp.gmail.com", port, context=context) as server:
server.login(sender, password)
for recipient in recipients:
server.sendmail(sender, recipient["receive"], message.format(pCode=pCode))
print("email sent")
send_email("receive@gmail.com", '123456')
Но когда я запускаю его, я получаю эту ошибку.
Traceback (most recent call last):
File "C:/MyPythonScripts/Iubi/PythonApps/emailSender.py", line 54, in <module>
send_email("receive@gmail.com", '123456')
File "C:/MyPythonScripts/Iubi/PythonApps/emailSender.py", line 48, in send_email
server.sendmail(sender, recipient["receive"], message.format(pCode=pCode))
File "C:\Users\Francesco Cambria\AppData\Local\Programs\Python\Python38-32\lib\smtplib.py", line 859, in sendmail
msg = _fix_eols(msg).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\xe8' in position 95: ordinal not in range(128)
I действительно пробовал все, я добавил # encoding=utf8
поверх своего файла, я пробовал с pCode = pCode.encode('utf8')
и некоторыми другими решениями, которые я нашел при переполнении стека, но ни одно, похоже, не работает, я всегда получаю одну и ту же ошибку .