Отправка электронной почты из Gmail с помощью Python - PullRequest
4 голосов
/ 04 октября 2010

Я пытаюсь научить себя программировать, создавая программы / сценарии, которые будут мне полезны. Я пытаюсь переустановить сценарий, который я нашел в Интернете, для отправки электронного письма через gmail с использованием сценария python ( Source ).

В этом примере есть часть кода для прикрепления файлов, которая мне не нужна / не нужна. Я настроил код так, чтобы мне не приходилось прикреплять какие-либо файлы, но когда я это делаю, я теряю тело письма. Любая помощь / советы о том, как изменить код, чтобы сохранить тело письма без изменений?

Ценю помощь.

Ответы [ 2 ]

5 голосов
/ 04 октября 2010

Пример кода, который вы используете, создает сообщение MIME из нескольких частей.Все является вложением, включая тело сообщения.Если вы просто хотите отправить простой старый текстовый или HTML-текстовый текст, состоящий из одной части, вам не нужно ничего из MIME.Это просто добавляет сложности.Видите этот бит в вызове sendmail () вашего примера, где написано msg.as_string ()?Ну, это просто преобразует объекты MIME, которые вы создали, в текст.Достаточно просто указать текст самостоятельно, если вы имеете дело с текстом для начала.

Функция ниже аналогична коду, который я использовал для отправки файла журнала в сценарии, который я написал.Он принимает текстовое тело и преобразует его в предварительно отформатированный HTML (для лучшей работы в Outlook).Если вы хотите сохранить его в виде простого текста, просто выньте строку, в которой добавлены теги HTML, и измените заголовок Content-Type на «text / plain.»

<code>import smtplib

def sendmail(sender, recipient, subject, body, server="localhost"):
    "Sends an e-mail to the specified recipient."

    body = ("<html><head></head><body><pre>%s
"% body.replace ("&", "&"). replace ("<", "<")) headers = ["From:" + отправитель, "Subject:" + subject, "To:" + получатель, "MIME-версия: 1.0 "," Content-Type: text / html "] headers =" \ r \ n ".join (заголовки) session = smtplib.SMTP (сервер) session.sendmail (отправитель, получатель, заголовки +" \ r \ n\ r \ n "+ body) session.quit () </code>
1 голос
/ 04 октября 2010

Я вижу, вы понимаете, что вы сделали не так.

В этом случае метод attach() относится к добавлению чего-либо в электронное письмо. Это сбивает с толку, потому что когда мы говорим о прикреплении вещей и электронной почты, мы думаем о добавлении дополнительных файлов, а не тела.

Основываясь на некоторых других примерах , кажется, что метод присоединения используется для добавления текста в текст сообщения или файла в электронное письмо.

Итак, чтобы ответить на ваш вопрос, метод attach делает то, что вы думаете, и даже больше - он также добавляет текст в тело.

Добро пожаловать в ТАК, кстати. Умный выбор Python для обучения написанию сценариев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...