Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Python — отправка электронной почты с использованием SMTP

Предыдущая страницаСледующая страница

Простой протокол передачи почты (SMTP) — это протокол, который обрабатывает отправку электронной почты и маршрутизацию электронной почты между почтовыми серверами.

Python предоставляет smtplib модуль, который определяет объект сеанса клиента SMTP, который можно использовать для отправки почты на любой интернет-компьютер с помощью демона прослушивателя SMTP или ESMTP.

Вот простой синтаксис для создания одного SMTP-объекта, который впоследствии можно использовать для отправки электронной почты —

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

Вот подробная информация о параметрах —

Объект SMTP имеет метод экземпляра с именем sendmail. , который обычно используется для отправки сообщения по почте. Он принимает три параметра —

Пример

Вот простой способ отправить одно электронное письмо с помощью скрипта Python. Попробуйте один раз –

#!/usr/bin/python

import smtplib

sender = '[email protected]'
receivers = ['[email protected]']

message = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: SMTP e-mail test

This is a test e-mail message.
"""

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, receivers, message)         
   print "Successfully sent email"
except SMTPException:
   print "Error: unable to send email"

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

Для отправки почты вы используете smtpObj для подключения к SMTP-серверу на локальном компьютере, а затем используйте sendmail вместе с сообщением, адресом отправителя и адресом получателя в качестве параметров (даже если адреса отправителя и получателя указаны в самом сообщении электронной почты, они не всегда используются для маршрутизации почты).

Если вы не используете SMTP-сервер на своем локальном компьютере, вы можете использовать smtplib клиент для связи с удаленным SMTP-сервером. Если вы не используете службу веб-почты (например, Hotmail или Yahoo! Mail), ваш провайдер электронной почты должен предоставить вам данные сервера исходящей почты, которые вы можете указать, как показано ниже:

smtplib.SMTP('mail.your-domain.com', 25)

Отправка электронной почты в формате HTML с помощью Python

Когда вы отправляете текстовое сообщение с помощью Python, все содержимое обрабатывается как простой текст. Даже если вы включите теги HTML в текстовое сообщение, оно будет отображаться как простой текст, а теги HTML не будут отформатированы в соответствии с синтаксисом HTML. Но Python предоставляет возможность отправлять HTML-сообщение как фактическое HTML-сообщение.

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

Пример

Ниже приведен пример отправки HTML-содержимого по электронной почте. Попробуйте один раз –

#!/usr/bin/python

import smtplib

message = """From: From Person <[email protected]>
To: To Person <[email protected]>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test

This is an e-mail message to be sent in HTML format

<b>This is HTML message.</b>
<h1>This is headline.</h1>
"""

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, receivers, message)         
   print "Successfully sent email"
except SMTPException:
   print "Error: unable to send email"

Отправка вложений по электронной почте

Чтобы отправить электронное письмо со смешанным содержимым, необходимо установить Content-type. заголовок в составной/смешанный . Затем можно указать разделы текста и вложений в границах. .

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

Прикрепленные файлы должны быть закодированы с помощью pack("m") функция кодирования base64 перед передачей.

Пример

Ниже приведен пример отправки файла /tmp/test.txt. в качестве вложения. Попробуйте один раз –

#!/usr/bin/python

import smtplib
import base64

filename = "/tmp/test.txt"

# Read a file and encode it into base64 format
fo = open(filename, "rb")
filecontent = fo.read()
encodedcontent = base64.b64encode(filecontent)  # base64

sender = '[email protected]'
reciever = '[email protected]'

marker = "AUNIQUEMARKER"

body ="""
This is a test email to send an attachement.
"""
# Define the main headers.
part1 = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Sending Attachement
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
""" % (marker, marker)

# Define the message action
part2 = """Content-Type: text/plain
Content-Transfer-Encoding:8bit

%s
--%s
""" % (body,marker)

# Define the attachment section
part3 = """Content-Type: multipart/mixed; name=\"%s\"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename=%s

%s
--%s--
""" %(filename, filename, encodedcontent, marker)
message = part1 + part2 + part3

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, reciever, message)
   print "Successfully sent email"
except Exception:
   print "Error: unable to send email"

Python

  1. Типы данных Python
  2. Операторы Python
  3. Оператор передачи Python
  4. Аргументы функции Python
  5. Словарь Питона
  6. Обработка исключений Python с использованием оператора try, exclude и finally
  7. Библиотека Python датчика температуры TMP006 с использованием Raspberry pi,
  8. Датчик температуры Python и Raspberry Pi
  9. Среднее значение Python:как найти СРЕДНЕЕ значение списка в Python
  10. Поменять местами две переменные Python, не используя третью