Latest web development tutorials

Python SMTP pour envoyer du courrier

SMTP (protocole de transfert de courrier simple) qui est protocole Simple Mail Transfer, qui est un ensemble de règles pour transmettre des messages de la source à la destination, qu'il doit contrôler la façon dont les lettres de transit.

Le smtplib python fournit un moyen très pratique pour envoyer des e-mail. Il protocole smtp pour un paquet simple.

Python créer syntaxe objet SMTP est la suivante:

import smtplib

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

Description Paramètre:

  • hôte: hôte du serveur SMTP. Vous pouvez spécifier une adresse IP hôte ou nom de domaine tels que: w3cschool.cc, ce paramètre est facultatif.
  • Port: Si vous fournissez un paramètre d'hôte, vous devez spécifier le numéro de port utilisé par le service SMTP, dans des circonstances normales numéro de port SMTP est 25.
  • local_hostname: Si votre SMTP sur cette machine, vous avez seulement besoin de spécifier l'adresse du serveur pour localhost.

Python objet SMTP en utilisant la méthode sendmail d'envoi d'e-mail avec la syntaxe suivante:

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

Description Paramètre:

  • from_addr: adresse de e-mail de l'expéditeur.
  • to_addrs: liste de chaînes, envoyer l'adresse e-mail.
  • msg: Envoyer un message

Ici, il faut noter que le troisième argument, msg est une chaîne qui représente l'e-mail. Nous savons qu'un message est généralement composé d'un en-tête, de l'expéditeur, le destinataire, le contenu du message, les pièces jointes, etc., envoyer du courrier, faites attention au format msg. Ce format est le format de définition de protocole smtp.

Exemples

Ce qui suit est un message envoyé en utilisant Python exemple simple:

#!/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: 无法发送邮件"

Nous utilisons trois citations pour mettre en place des messages e-mail, la norme e-mail nécessite troistêtes:De, À etObjet,chaque information directement avec une ligne partagée vide.

Nous sommes reliés par instanciation smtplib le module SMTP SMTP l'accèsdesobjets, et d'envoyer le message en utilisant la méthodesendmail.

Effectuez la procédure ci-dessus, si vous installez cette unité sendmail, il va afficher:

$ python test.py 
邮件发送成功

Affichez notre boîte de réception (généralement à la poubelle), vous pouvez consulter le message e-mail:

Si nous ne disposons pas accès natif à sendmail, vous pouvez également utiliser d'autres fournisseurs de services de messagerie accès SMTP (QQ, Netease, Google, etc.).

#!/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: 无法发送邮件"

Utilisation de Python a envoyé des messages au format HTML

Sauf messages envoyés Python et le message e-mail au format HTML est envoyé sous forme de texte dans les MimeText _subtype réglé sur html. Code spécifique comme suit:

#!/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: 无法发送邮件"

Effectuez la procédure ci-dessus, si vous installez cette unité sendmail, il va afficher:

$ python test.py 
邮件发送成功

Affichez notre boîte de réception (généralement à la poubelle), vous pouvez consulter le message e-mail:


Python envoyer mails avec pièces jointes

Envoyer des messages avec des pièces jointes, vous devez d'abord créer MIMEMultipart () par exemple, annexe puis construit, s'il y a plusieurs pièces jointes peut être construit de manière séquentielle. Enfin smtplib.smtp envoyé.

#!/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 
邮件发送成功

Affichez notre boîte de réception (généralement à la poubelle), vous pouvez consulter le message e-mail:


Ajouter une image en texte HTML

HTML message texte dans les fournisseurs de services de courrier généraux à ajouter en dehors de la chaîne est non valide, le droit d'ajouter percée sont présentées ci-dessous:

#!/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 
邮件发送成功

Affichez notre boîte de réception (si dans la poubelle peut être nécessaire de déplacer la boîte de réception avant l'affichage normal), vous pouvez consulter le message e-mail:

Pour plus d' informations, s'il vous plaît se référer à: https://docs.python.org/2/library/email-examples.html .