#python #email
Вопрос:
Я пытаюсь отправить электронное письмо с помощью python.
В функции server.sendmail, когда я заменяю сообщение «примером текста с двойной кавычкой», я получаю электронное письмо с хорошим сообщением.
Теперь, когда я пытаюсь отправить содержимое файла, сохраненное в моей переменной «сообщение», я получаю пустое письмо, но если я напечатаю свою переменную, содержимое будет правильным.
У тебя есть идея ? Тх !
import smtplib, ssl
import os
smtp_adress = 'smtp.gmail.com'
smtp_port = 465
email_adress = 'xxx@gmail.com'
email_password = 'xxx'
email_receiver = 'xxx@hotmail.fr'
# message
file = open('dl_link', 'r')
line = file.readlines()
file.close()
message = line[0]
context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_adress, smtp_port, context=context) as server:
server.login(email_adress, email_password)
server.sendmail(email_adress, email_receiver, message)
print(message)
Комментарии:
1. Является ли первая строка
dl_link
пустой?2. Почему вы отправляете только одну строку текста? Разве вы не должны отправить файл?
3. dl_link не пустой, когда я его печатаю, появляется текст.
4. Файл содержит только одну строку со ссылкой. Скопировать ссылку в текст письма будет быстрее, чем загрузить мой файл
5. Из документов для sendmail: msg может быть строкой, содержащей символы в диапазоне ASCII, или строкой в байтах. Строка кодируется в байты с помощью кодека ascii, а одиночные символы r и n преобразуются в символы rn. Байтовая строка не изменяется. Удовлетворено ли это? Что произойдет, если вы превратите свое сообщение в байтовую строку с
str.encode(message)
помощью ? Возможно, в URL-адресе, который вы отправляете, есть какие-нибудь французские акценты?