Python的邮件发送


发送邮件传输协议(SMTP)用作使用python处理电子邮件传输的协议。它用于在电子邮件服务器之间路由电子邮件。


Python提供了smtplib模块,该模块定义了一个SMTP客户端会话对象,用于将电子邮件发送到Internet机器。为此,我们必须使用import语句导入smtplib模块。

$  import  smtplib

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


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

它接受以下参数。


host:它是运行SMTP服务器的计算机的主机名。在这里,我们可以指定服务器的IP地址,如(https://www.javatpoint.com)或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服务器传递,而不是将localhost与端口587一起使用。


使用以下语法。

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

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


请考虑以下示例。


#!/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

我们可以通过指定要发送HTML的MIME版本,内容类型和字符集来格式化消息中的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")