Heim > Artikel > Backend-Entwicklung > Detaillierte Einführung in Python mit SMTP zum Versenden von E-Mails
Python verwendet SMTP zum Senden von E-Mails.
SMTP (Simple Mail Transfer Protocol) ist ein einfaches E-Mail-Übertragungsprotokoll Protokolle, die von verwendet werden. Die Regeln für die Übertragung von E-Mails von der Quelladresse zur Zieladresse, die steuern, wie die E-Mail übertragen wird.
Pythons smtplib bietet eine sehr bequeme Möglichkeit, E-Mails zu versenden. Es kapselt einfach das SMTP-Protokoll.
Die Syntax für Python zum Erstellen eines SMTP-Objekts lautet wie folgt:
import smtplib smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
Parameterbeschreibung:
Host: SMTP-Server-Host. Sie können die IP-Adresse oder den Domänennamen des Hosts angeben, z. B. w3cschool.cc. Dies ist ein optionaler Parameter.
Port: Wenn Sie den Host-Parameter angeben, müssen Sie die vom SMTP-Dienst verwendete Portnummer angeben. Im Allgemeinen ist die SMTP-Portnummer 25.
local_hostname: Wenn sich SMTP auf Ihrem lokalen Computer befindet, müssen Sie nur die Serveradresse als localhost angeben.
Das Python-SMTP-Objekt verwendet die sendmail-Methode zum Senden von E-Mails. Die Syntax lautet wie folgt:
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]
from_addr: E-Mail-Absenderadresse.
to_addrs: String-Liste, E-Mail-Sendeadresse.
msg: Senden Sie eine Nachricht
Beachten Sie, dass der dritte Parameter hier eine Zeichenfolge ist, die eine E-Mail darstellt. Wir wissen, dass E-Mails im Allgemeinen aus Titel, Absender, Empfänger, E-Mail-Inhalt, Anhängen usw. bestehen. Achten Sie beim Senden einer E-Mail auf das Nachrichtenformat. Dieses Format ist das im SMTP-Protokoll definierte Format.
Das Folgende ist ein einfaches Beispiel für die Verwendung von Python zum Senden von E-Mails:
#!/usr/bin/pythonimport smtplib sender = 'from@fromdomain.com'receivers = ['to@todomain.com']message = """From: From Person <from@fromdomain.com> To: To Person <to@todomain.com> 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"
Python Der Unterschied zwischen dem Senden von E-Mails im HTML-Format und dem Senden von Nur-Text-Nachrichten besteht darin, dass _subtype in MIMEText auf html gesetzt ist. Der spezifische Code lautet wie folgt:
import smtplib from email.mime.text import MIMEText mailto_list=["YYY@YYY.com"] mail_host="smtp.XXX.com" #设置服务器mail_user="XXX" #用户名mail_pass="XXXX" #口令 mail_postfix="XXX.com" #发件箱的后缀 def send_mail(to_list,sub,content): #to_list:收件人;sub:主题;content:邮件内容 me="hello"+"<"+mail_user+"@"+mail_postfix+">" #这里的hello可以任意设置,收到信后,将按照设置显示 msg = MIMEText(content,_subtype='html',_charset='gb2312') #创建一个实例,这里设置为html格式邮件 msg['Subject'] = sub #设置主题 msg['From'] = me msg['To'] = ";".join(to_list) try: s = smtplib.SMTP() s.connect(mail_host) #连接smtp服务器 s.login(mail_user,mail_pass) #登陆服务器 s.sendmail(me, to_list, msg.as_string()) #发送邮件 s.close() return True except Exception, e: print str(e) return False if __name__ == '__main__': if send_mail(mailto_list,"hello","<a href='http://www.cnblogs.com/xiaowuyi'>小五义</a>"): print "发送成功" else: print "发送失败"
Oder Sie können den Inhaltstyp als Text/HTML im Nachrichtentext angeben, wie im folgenden Beispiel gezeigt:
#!/usr/bin/pythonimport smtplib message = """From: From Person <from@fromdomain.com> To: To Person <to@todomain.com> 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"
Um eine E-Mail mit Anhängen zu senden, müssen Sie zuerst eine MIMEMultipart()-Instanz erstellen und dann die Anhänge erstellen. Wenn mehrere Anhänge vorhanden sind, können diese nacheinander erstellt werden schließlich mit smtplib.smtp senden.
from email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartimport smtplib#创建一个带附件的实例msg = MIMEMultipart()#构造附件1att1 = MIMEText(open('d:\\123.rar', 'rb').read(), 'base64', 'gb2312')att1["Content-Type"] = 'application/octet-stream'att1["Content-Disposition"] = 'attachment; filename="123.doc"'#这里的filename可以任意写,写什么名字,邮件中显示什么名字msg.attach(att1)#构造附件2att2 = MIMEText(open('d:\\123.txt', 'rb').read(), 'base64', 'gb2312')att2["Content-Type"] = 'application/octet-stream'att2["Content-Disposition"] = 'attachment; filename="123.txt"'msg.attach(att2)#加邮件头msg['to'] = 'YYY@YYY.com'msg['from'] = 'XXX@XXX.com'msg['subject'] = 'hello world'#发送邮件try: server = smtplib.SMTP() server.connect('smtp.XXX.com') server.login('XXX','XXXXX')#XXX为用户名,XXXXX为密码 server.sendmail(msg['from'], msg['to'],msg.as_string()) server.quit() print '发送成功'except Exception, e: print str(e)
以下实例指定了Content-type header 为 multipart/mixed,并发送/tmp/test.txt 文本文件:
#!/usr/bin/pythonimport smtplibimport base64 filename = "/tmp/test.txt"# 读取文件内容并使用 base64 编码fo = open(filename, "rb")filecontent = fo.read()encodedcontent = base64.b64encode(filecontent) # base64sender = 'webmaster@tutorialpoint.com'reciever = 'amrood.admin@gmail.com'marker = "AUNIQUEMARKER"body =""" This is a test email to send an attachement. """# 定义头部信息part1 = """From: From Person <me@fromdomain.net> To: To Person <amrood.admin@gmail.com> Subject: Sending Attachement MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=%s --%s """ % (marker, marker)# 定义消息动作part2 = """Content-Type: text/plain Content-Transfer-Encoding:8bit %s --%s """ % (body,marker)# 定义附近部分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 + part3try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, reciever, message) print "Successfully sent email"except Exception: print "Error: unable to send email"
【相关推荐】
5. php smtp发送邮件
7. python smtplib模块发送SSL/TLS安全邮件实例
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Python mit SMTP zum Versenden von E-Mails. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!