zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Python实现发送email的几种常用方法

Python方法 实现 常用 几种 发送 email
2023-06-13 09:15:43 时间

学过Python的人都知道,实用Python实现发送email的功能还是比较简单的,可以通过登录邮件服务来发送,linux下也可以使用调用sendmail命令来发送,还可以使用本地或者是远程的smtp服务来发送邮件,不管是单个,群发,还是抄送都比较容易实现。

本文就把几个最简单的发送邮件方式记录下来,像html邮件,附件等也是支持的,读者在需要时可以参考查询一下。具体方法如下:

1.登录邮件服务

具体代码如下:

#!/usr/bin/envpython
#-*-coding:utf-8-*-
#python2.7x
#send_simple_email_by_account.py@2014-08-18
#author:orangleliu

"""
使用python写邮件simple
使用126的邮箱服务
"""

importsmtplib
fromemail.mime.textimportMIMEText

SMTPserver="smtp.126.com"
sender="12345678@126.com"
password="xxxx"

message="IsendamessagebyPython.你好"
msg=MIMEText(message)

msg["Subject"]="TestEmailbyPython"
msg["From"]=sender
msg["To"]=destination

mailserver=smtplib.SMTP(SMTPserver,25)
mailserver.login(sender,password)
mailserver.sendmail(sender,[sender],msg.as_string())
mailserver.quit()
print"sendemailsuccess"

2.调用sendmail命令(linux)

具体代码如下:

#-*-coding:utf-8-*-
#python2.7x
#send_email_by_.py
#author:orangleliu
#date:2014-08-18
"""
用的是sendmail命令的方式

这个时候邮件还不定可以发出来,hostname配置可能需要更改
"""

fromemail.mime.textimportMIMEText
fromsubprocessimportPopen,PIPE

defget_sh_res():
p=Popen(["/Application/2.0/nirvana/logs/log.sh"],stdout=PIPE)
returnstr(p.communicate()[0])

defmail_send(sender,recevier):
print"getemailinfo..."
msg=MIMEText(get_sh_res())
msg["From"]=sender
msg["To"]=recevier
msg["Subject"]="Yestodayinterfacelogresults"
p=Popen(["/usr/sbin/sendmail","-t"],stdin=PIPE)
res=p.communicate(msg.as_string())
print"mailsended..."

if__name__=="__main__":
s="12345678@qq.com"
r="123456@163.com"
mail_send(s,r)

3使用smtp服务来发送(本地或者是远程服务器)

具体代码如下:

#!/usr/bin/envpython
#-*-coding:utf-8-*-
#python2.7x
#send_email_by_smtp.py
#author:orangleliu
#date:2014-08-18
"""
linux下使用本地的smtp服务来发送邮件
前提要开启smtp服务,检查的方法
#ps-ef|grepsendmail
#telnetlocalhost25

这个时候邮件还不定可以发出来,hostname配置可能需要更改
"""
importsmtplib
fromemail.mime.textimportMIMEText
fromsubprocessimportPopen,PIPE


defget_sh_res():
p=Popen(["/Application/2.0/nirvana/logs/log.sh"],stdout=PIPE)
returnstr(p.communicate()[0])

defmail_send(sender,recevier):
msg=MIMEText(get_sh_res())
msg["From"]=sender
msg["To"]=recevier
msg["Subject"]="Yestodayinterfacelogresults"
s=smtplib.SMTP("localhost")
s.sendmail(sender,[recevier],msg.as_string())
s.quit()
print"sendmailfinished..."

if__name__=="__main__":
s="123456@163.com"
r=s
mail_send(s,r)

相信本文所示方法对于大家进行Python程序设计能够起到一定的参考借鉴价值。