Python实现SMTP邮件发送
SMTP(SimpleMailTransferProtocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。
SMTP对象语法如下:
importsmtplib smtpObj=smtplib.SMTP([host[,port[,local_hostname]]])
参数说明:
- host:SMTP服务器主机。你可以指定主机的ip地址或者域名如:runoob.com,这个是可选参数。
- port:如果你提供了host参数,你需要指定SMTP服务使用的端口号,一般情况下SMTP端口号为25。
- local_hostname:如果SMTP在你的本机上,你只需要指定服务器地址为localhost即可。
PythonSMTP对象使用sendmail方法发送邮件,语法如下:
SMTP.sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options])
参数说明:
- from_addr:邮件发送者地址。
- to_addrs:字符串列表,邮件发送地址。
- msg:发送消息
这里要注意一下第三个参数,msg是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意msg的格式。这个格式就是smtp协议中定义的格式。
实例
以下执行实例需要你本机已安装了支持SMTP的服务,如:sendmail。
importsmtplib fromemail.mime.textimportMIMEText fromemail.headerimportHeader sender='973708513@qq.com'#发送方 receiver='sutaoyu001@163.com'#接收方 #三个参数:第一个为文本内容,第二个plain设置文本格式,第三个utf-8设置编码 message=MIMEText('QQ像163发送测试文件....','plain','utf-8') message['From']=Header('Python教程...')#发送者 message['To']=Header('测试','utf-8')#接受者 subject='PythonSMTP测试' message['subject']=Header('utf-8') try: smtpObj=smtplib.SMTP('localhost') smtpObj.sendmail(sender,receiver,message.as_string()) print("邮件发送成功") exceptsmtplib.SMTPException: print("Error:无法发送邮件") #邮件发送成功
如果我们本机没有sendmail访问,也可以使用其他邮件服务商的SMTP访问(QQ、网易、Google等)。
importsmtplib fromemail.mime.textimportMIMEText fromemail.headerimportHeader #第三方SMTP服务 host="smtp.qq.com"#设置服务器 user="973708513"#用户名 password="xxxxxx"#口令 sender='973708513@qq.com'#发送方 receiver='sutaoyu001@163.com'#接收方 #三个参数:第一个为文本内容,第二个plain设置文本格式,第三个utf-8设置编码 message=MIMEText('QQ像163发送测试文件....','plain','utf-8') message['From']=Header('Python教程...')#发送者 message['To']=Header('测试','utf-8')#接受者 subject='PythonSMTP测试' message['subject']=Header('utf-8') try: smtpObj=smtplib.SMTP() smtpObj.connect(host,465)#25为SMTP端口号 smtpObj.login(user,password) smtpObj.sendmail(sender,receiver,message.as_string()) print("邮件发送成功") exceptsmtplib.SMTPException: print("Error:无法发送邮件") #邮件发送成功
以上就是Python实现SMTP邮件发送的详细内容,更多关于PythonSMTP的资料请关注毛票票其它相关文章!