Я пытаюсь вложить html в электронные письма с помощью скрипта Python. Я был в состоянии отправить их успешно, однако хотел иметь более организованный код. Я создал функцию, в которой HTML-код находится в виде строки. Однако, кажется, есть проблема с кодировкой, когда я прикрепляю ее к электронному письму. Мне нужна помощь, чтобы понять, где мне нужно установить кодировку.
Я прочитал несколько других постов, касающихся этого сообщения об ошибке, и все они, кажется, добавляют эту строку кода в свою строку.
encode('utf8')
Итак, я попытался прикрепить это туда, где я думаю, что это нужно сделать, но не смог найти никакого успеха.
Это то, что у меня есть
def EmailTemplate():
test = """\
<html>
<head></head>
<body>
<p>Hi!<br>
How are you?<br>
Here is the <a href="http://www.python.org">link</a> you wanted.
</p>
</body>
</html>
"""
def SendEmail(me, you):
# me == my email address
# you == recipient's email address
# Create message container - the correct MIME type is multipart/alternative.
msg = MIMEMultipart('alternative')
msg['Subject'] = "You've gone over your credit limit"
msg['From'] = me
msg['To'] = you
# Create the body of the message (a plain-text and an HTML version).
text = ''
html = EmailTemplate()
# Record the MIME types of both parts - text/plain and text/html.
part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')
Этот код работалкогда у меня был HTML в виде строки. Однако теперь я добавил функцию, чтобы попытаться сделать то же самое.
Например, это то, что я имел раньше и работал
html = """\
<html>
<head></head>
<body>
<p>Hi!<br>
How are you?<br>
Here is the <a href="http://www.python.org">link</a> you wanted.
</p>
</body>
</html>
"""
Поэтому я попытался повторить это с помощью следующего.
html = EmailTemplate()
Тогда функция имеет вид
def EmailTemplate():
test = """\
<html>
<head></head>
<body>
<p>Hi!<br>
How are you?<br>
Here is the <a href="http://www.python.org">link</a> you wanted.
</p>
</body>
</html>
"""
Я ожидал, что электронное письмо будет отправлено как обычно, поскольку функция - это то же самое. Однако я получаю это для сообщения об ошибке.
File "H:\Files\Projects\Python\Test\Htmlemail.py", line 34, in SendEmail
part2 = MIMEText(html, 'html')
File "C:\Users\vanle\AppData\Local\Programs\Python\Python37-32\lib\email\mime\text.py", line 34, in __init__
_text.encode('us-ascii')
AttributeError: 'NoneType' object has no attribute 'encode'
Поэтому я попытался добавить кодировку к следующей строке кода
part2 = MIMEText(html.encode('utf8'), 'html')
Однако я все еще получаю это сообщение об ошибке
File "H:\Files\Projects\Python\Test\Htmlemail.py", line 34, in SendEmail
part2 = MIMEText(html.encode('utf8'), 'html')
AttributeError: 'NoneType' object has no attribute 'encode'