Simple Mail Transfer Protocol (SMTP) 用作处理使用Python进行电子邮件传输的协议。它用于在电子邮件服务器之间路由电子邮件。它是一个应用层协议,允许用户向另一个用户发送邮件。收件人使用 POP(邮局协议)IMAP(Internet消息访问协议) 协议检索电子邮件。

使用SMTP发送Python邮件

当服务器侦听来自客户端的TCP连接时,它会在端口587上初始化连接。

Python提供了一个 smtplib 模块,该模块定义了一个用于向互联网主机发送电子邮件的SMTP客户端会话对象。为此,我们需要使用导入语句导入 smtplib 模块。

$ import smtplib  

SMTP对象用于电子邮件传输。以下语法用于创建smtplib对象。

import smtplib     
smtpObj = smtplib.SMTP(host, port, local_hostname)      

它接受以下参数。

  • host: 运行SMTP服务器的计算机的主机名。在这里,我们可以指定服务器的IP地址,比如localhost。这是一个可选参数。
  • port: 主机机器监听SMTP连接的端口号。默认情况下为25。
  • local_hostname: 如果SMTP服务器在本地计算机上运行,我们可以提到本地计算机的主机名。

SMTP对象的sendmail() 方法用于将邮件发送到所需的机器。语法如下。

smtpObj.sendmail(sender, receiver, message)    

示例

#!/usr/bin/python3    
import smtplib    
sender_mail = 'sender@fromdomain.com'    
receivers_mail = ['reciever@todomain.com']    
message = """From: From Person %s  
To: To Person %s  
Subject: Sending SMTP e-mail   
This is a test e-mail message.  
"""%(sender_mail,receivers_mail)    
try:    
   smtpObj = smtplib.SMTP('localhost')    
   smtpObj.sendmail(sender_mail, receivers_mail, message)    
   print("Successfully sent email")    
except Exception:    
   print("Error: unable to send email")    

从Gmail发送电子邮件

有些情况下,电子邮件是使用Gmail的SMTP服务器发送的。在这种情况下,我们可以将Gmail作为SMTP服务器传递,而不是使用本地主机和端口587。

使用以下语法。

$ smtpObj = smtplib.SMTP("gmail.com", 587)     

在这里,我们需要使用Gmail用户名和密码登录Gmail帐户。为此,smtplib提供了login()方法,该方法接受发件人的用户名和密码。

如果您使用Gmail,这可能会导致Gmail要求您允许不太安全的应用程序访问。为使其正常工作,您需要临时启用此选项。

使用SMTP发送Python邮件

考虑以下示例。

示例

#!/usr/bin/python3    
import smtplib    
sender_mail = 'sender@gmail.com'    
receivers_mail = ['reciever@gmail.com']    
message = """From: From Person %s  
To: To Person %s  
Subject: Sending SMTP e-mail   
This is a test e-mail message.  
"""%(sender_mail,receivers_mail)    
try:    
   password = input('Enter the password');    
   smtpObj = smtplib.SMTP('gmail.com',587)    
   smtpobj.login(sender_mail,password)    
   smtpObj.sendmail(sender_mail, receivers_mail, message)    
   print("Successfully sent email")    
except Exception:    
   print("Error: unable to send email")    

在电子邮件中发送HTML

我们可以通过指定MIME版本、内容类型和字符集来格式化消息中的HTML,以便发送HTML内容。

考虑以下示例。

示例

#!/usr/bin/python3    
import smtplib    
sender_mail = 'sender@fromdomain.com'    
receivers_mail = ['reciever@todomain.com']    
message = """From: From Person %s  
To: To Person %s  
  
MIME-Version:1.0  
Content-type:text/html  
  
  
Subject: Sending SMTP e-mail   
  
<h3>Python SMTP</h3>  
<strong>This is a test e-mail message.</strong>  
"""%(sender_mail,receivers_mail)    
try:    
   smtpObj = smtplib.SMTP('localhost')    
   smtpObj.sendmail(sender_mail, receivers_mail, message)    
   print("Successfully sent email")    
except Exception:    
   print("Error: unable to send email")   

标签: Tkinter教程, Tkinter安装, Tkinter库, Tkinter入门, Tkinter学习, Tkinter入门教程, Tkinter, Tkinter进阶, Tkinter指南, Tkinter学习指南, Tkinter进阶教程, Tkinter编程