Latest web development tutorials

Python SMTP do wysyłania poczty

SMTP (Simple Mail Transfer Protocol), czyli Simple Mail Transfer Protocol, który jest zbiorem zasad przekazywania wiadomości od źródła do miejsca przeznaczenia, który musi kontrolować sposób listów tranzycie.

smtplib Pythona zapewnia bardzo wygodny sposób na wysyłanie wiadomości e-mail. Protokołem SMTP to prosty pakiet.

Python tworzenia obiektu SMTP składnia jest następująca:

import smtplib

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

Parametr Opis:

  • zorganizowanie: hosta serwera SMTP. Można określić adres IP hosta lub nazwę domeny, takie jak: w3cschool.cc Ten parametr jest opcjonalny.
  • Port: Jeśli podasz parametru hosta, należy określić numer portu używanego przez usługę SMTP, w normalnych warunkach numer portu SMTP jest 25.
  • local_hostname: Jeśli SMTP na tym komputerze, wystarczy podać adres serwera na localhost.

Python obiektu SMTP przy użyciu sendmail sposób wysyłania wiadomości e-mail o następującej składni:

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]

Parametr Opis:

  • from_addr: adres e-mail nadawcy.
  • to_addrs: lista ciąg wysłać adres e-mail.
  • MSG: Wyślij wiadomość

Tutaj musimy pamiętać, że trzeci argument, MSG jest ciąg, który reprezentuje pocztę. Wiemy, że wiadomość jest na ogół składa się z nagłówka, nadawcy, odbiorcy, treści wiadomości, załączniki, itp, wysyłania poczty, należy zwrócić uwagę na format msg. Format ten jest w formacie definicja protokołu SMTP.

Przykłady

Poniżej znajduje się wiadomość wysłana z użyciem Pythona prosty przykład:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender = '[email protected]'
receivers = ['[email protected]']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("本教程", 'utf-8')
message['To'] =  Header("测试", 'utf-8')

subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')


try:
    smtpObj = smtplib.SMTP('localhost')
    smtpObj.sendmail(sender, receivers, message.as_string())
    print "邮件发送成功"
except smtplib.SMTPException:
    print "Error: 无法发送邮件"

Używamy trzy cytaty skonfigurować wiadomości e-mail, standard e-mail wymaga trzynagłówki:Od, Do iTemat,każde informacje bezpośrednio z pustym rzędzie podziału.

Jesteśmy związani przez instancji OBIEKTACHsmtpObjModuł smtplib SMTP SMTP dostęp i wysłać wiadomość przy użyciu metodysendmail.

Wykonaj powyższą procedurę, jeśli instalacji urządzenia sendmail, to wyświetli:

$ python test.py 
邮件发送成功

Zobacz naszą skrzynkę odbiorczą (zwykle w kosza), można przejrzeć wiadomość e-mail:

Jeśli nie mamy dostępu do rodzimej sendmail, można również korzystać z innych dostawców usług poczty dostępu SMTP (QQ, Netease, Google, itp).

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 第三方 SMTP 服务
mail_host="smtp.XXX.com"  #设置服务器
mail_user="XXXX"    #用户名
mail_pass="XXXXXX"   #口令 


sender = '[email protected]'
receivers = ['[email protected]']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("本教程", 'utf-8')
message['To'] =  Header("测试", 'utf-8')

subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')


try:
    smtpObj = smtplib.SMTP() 
    smtpObj.connect(mail_host, 25)    # 25 为 SMTP 端口号
    smtpObj.login(mail_user,mail_pass)  
    smtpObj.sendmail(sender, receivers, message.as_string())
    print "邮件发送成功"
except smtplib.SMTPException:
    print "Error: 无法发送邮件"

Korzystanie Python wysłane wiadomości w formacie HTML

Oprócz wiadomości wysłane Python i HTML sformatowane wiadomości e-mail zostanie wysłana jako zwykły tekst w MIMEText _subtype ustawiony na html. Specjalny kod w następujący sposób:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender = '[email protected]'
receivers = ['[email protected]']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

mail_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.w3big.com">这是一个链接</a></p>
"""
message = MIMEText(mail_msg, 'html', 'utf-8')
message['From'] = Header("本教程", 'utf-8')
message['To'] =  Header("测试", 'utf-8')

subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')


try:
    smtpObj = smtplib.SMTP('localhost')
    smtpObj.sendmail(sender, receivers, message.as_string())
    print "邮件发送成功"
except smtplib.SMTPException:
    print "Error: 无法发送邮件"

Wykonaj powyższą procedurę, jeśli instalacji urządzenia sendmail, to wyświetli:

$ python test.py 
邮件发送成功

Zobacz naszą skrzynkę odbiorczą (zwykle w kosza), można przejrzeć wiadomość e-mail:


Python wysyłania poczty z załącznikami

Wysyłanie wiadomości z załącznikami, należy najpierw utworzyć MIMEMultipart () instancji, a następnie skonstruowany załącznik, jeśli istnieje wiele załączników mogą być zbudowane sekwencyjnie. Wreszcie smtplib.smtp wysłana.

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

sender = '[email protected]'
receivers = ['[email protected]']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

#创建一个带附件的实例
message = MIMEMultipart()
message['From'] = Header("本教程", 'utf-8')
message['To'] =  Header("测试", 'utf-8')
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')

#邮件正文内容
message.attach(MIMEText('这是本教程Python 邮件发送测试……', 'plain', 'utf-8'))

# 构造附件1,传送当前目录下的 test.txt 文件
att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att1["Content-Disposition"] = 'attachment; filename="test.txt"'
message.attach(att1)

# 构造附件2,传送当前目录下的 w3big.txt 文件
att2 = MIMEText(open('w3big.txt', 'rb').read(), 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
att2["Content-Disposition"] = 'attachment; filename="w3big.txt"'
message.attach(att2)

try:
    smtpObj = smtplib.SMTP('localhost')
    smtpObj.sendmail(sender, receivers, message.as_string())
    print "邮件发送成功"
except smtplib.SMTPException:
    print "Error: 无法发送邮件"
$ python test.py 
邮件发送成功

Zobacz naszą skrzynkę odbiorczą (zwykle w kosza), można przejrzeć wiadomość e-mail:


Dodaj obrazek w tekście HTML

HTML wiadomości tekstowych w ogólnych dostawców usług poczty elektronicznej, aby dodać poza łańcuchem nie jest ważne, prawo dodać przełom zostały przedstawione poniżej:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header

sender = '[email protected]'
receivers = ['[email protected]']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

msgRoot = MIMEMultipart('related')
msgRoot['From'] = Header("本教程", 'utf-8')
msgRoot['To'] =  Header("测试", 'utf-8')
subject = 'Python SMTP 邮件测试'
msgRoot['Subject'] = Header(subject, 'utf-8')

msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)


mail_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.w3big.com">本教程链接</a></p>
<p>图片演示:</p>
<p><img src="cid:image1"></p>
"""
msgAlternative.attach(MIMEText(mail_msg, 'html', 'utf-8'))

# 指定图片为当前目录
fp = open('test.png', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()

# 定义图片 ID,在 HTML 文本中引用
msgImage.add_header('Content-ID', '<image1>')
msgRoot.attach(msgImage)

try:
    smtpObj = smtplib.SMTP('localhost')
    smtpObj.sendmail(sender, receivers, msgRoot.as_string())
    print "邮件发送成功"
except smtplib.SMTPException:
    print "Error: 无法发送邮件"
$ python test.py 
邮件发送成功

Zobacz naszą skrzynkę odbiorczą (jeśli w koszu mogą wymagać, aby przejść do skrzynki odbiorczej przed normalnym wyświetlaczem), można przeglądać wiadomości e-mail:

Aby uzyskać więcej informacji, zapoznaj się z: https://docs.python.org/2/library/email-examples.html .