Отправляйте почту с помощью python

#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-адресе, который вы отправляете, есть какие-нибудь французские акценты?