Latest web development tutorials

Python SMTP-Mail zu senden

SMTP (Simple Mail Transfer Protocol), das Simple Mail Transfer Protocol, das ist ein Satz von Regeln für die Nachrichten von der Quelle zum Ziel zu übertragen, der sie den Weg, um die Buchstaben des Transits zu kontrollieren hat.

Pythons smtplib bietet eine sehr bequeme Möglichkeit, E-Mail zu versenden. Es SMTP-Protokoll für ein einfaches Paket.

Python erstellen SMTP-Objekt-Syntax wie folgt lautet:

import smtplib

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

Parameter Beschreibung:

  • Host: SMTP-Server-Host. Sie können eine Host-IP-Adresse oder Domain-Namen angeben, wie zum Beispiel: w3cschool.cc, dies ist ein optionaler Parameter.
  • Port: Wenn Sie einen Host-Parameter zur Verfügung stellen, müssen Sie den SMTP-Dienst verwendet, um die Portnummer angeben, unter normalen Umständen SMTP-Portnummer 25 ist.
  • lokaler_Host_Name: Wenn Ihr SMTP auf dieser Maschine, brauchen Sie nur die Serveradresse für localhost angeben.

Python SMTP-Objekt mit Sendmail-Methode das Senden von E-Mail mit der folgenden Syntax:

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

Parameter Beschreibung:

  • from_addr: E-Mail-Adresse des Absenders.
  • to_addrs: String-Liste, E-Mail-Adresse senden.
  • msg: Sende eine Nachricht

Hier müssen wir feststellen, dass das dritte Argument, msg ist eine Zeichenfolge, die die E-Mail darstellt. Wir wissen, dass eine Nachricht im Allgemeinen aus einem Kopf besteht, Absender, Empfänger, Nachrichteninhalt, Anhänge, etc. Mail senden, achten Sie auf msg-Format. Dieses Format ist das SMTP-Protokoll-Definition-Format.

Beispiele

Nachfolgend finden Sie eine Nachricht Python einfaches Beispiel gesendet werden:

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

Wir verwenden drei Angebote von E-Mails einrichten, E-Mail - Standard erfordert dreiHeader:Von, An undBetreff,jede Information direkt mit einer leeren Zeile gespalten.

Wir sind von der Instanziierung ObjektesmtpObjsmtplib Modul SMTP SMTP Zugriff auf, verbunden und die Nachricht mitSendmail- Methode zu senden.

Führen Sie das obige Verfahren, wenn Sie das Gerät Sendmail installieren, wird es Ausgabe:

$ python test.py 
邮件发送成功

Schauen Sie sich unsere Posteingang (in der Regel in den Papierkorb), können Sie die E-Mail-Nachricht anzuzeigen:

Wenn wir nativen keinen Zugriff auf Sendmail haben, können Sie auch andere E-Mail-Service-Provider SMTP-Zugang (QQ, Netease, Google, etc.) verwenden.

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

Verwenden gesendet Python-Nachrichten im HTML-Format

Außer Nachrichten gesendet wird, Python und HTML-formatierte E-Mail-Nachricht als Klartext in den Mime zu html _subtype gesetzt gesendet. Spezifische Code wie folgt:

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

Führen Sie das obige Verfahren, wenn Sie das Gerät Sendmail installieren, wird es Ausgabe:

$ python test.py 
邮件发送成功

Schauen Sie sich unsere Posteingang (in der Regel in den Papierkorb), können Sie die E-Mail-Nachricht anzuzeigen:


Python Mail mit Anhängen senden

Senden von Nachrichten mit Anhängen, zuerst MIMEMultipart () Instanz zu erstellen, dann konstruierte Anlage, wenn es mehrere Anhänge können sequentiell aufgebaut werden. Schließlich schickte smtplib.smtp.

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

Schauen Sie sich unsere Posteingang (in der Regel in den Papierkorb), können Sie die E-Mail-Nachricht anzuzeigen:


Fügen Sie ein Bild in HTML-Text

HTML-Text-Nachricht in den allgemeinen Mail-Service-Provider außerhalb der Kette hinzuzufügen, ist nicht gültig, der richtige Durchbruch hinzuzufügen sind unten dargestellt:

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

Schauen Sie sich unsere Posteingang (wenn in den Müll müssen möglicherweise in den Posteingang, bevor die normale Anzeige zu bewegen), können Sie die E-Mail-Nachricht anzuzeigen:

Weitere Informationen finden Sie unter: https://docs.python.org/2/library/email-examples.html .