简单的python smtp发邮件代码


写了一个服务器的监控程序,里面用到邮件提醒功能。python sample code里面没有认证的部分,于是查了文档,google了一下,下了如下的smtp发送邮件的函数,支持smtp验证。代码如下:

#!/usr/bin/env python
# -*- coding: gbk -*-
#导入smtplib和MIMEText
import smtplib
from email.mime.text import MIMEText
#############
#要发给谁,这里发给2个人
mailto_list=["aaa@juyimeng.com","bbb@juyimeng.com"]
#####################
#设置服务器,用户名、口令以及邮箱的后缀
mail_host="smtp.126.com"
mail_user="xxx"
mail_pass="yyy"
mail_postfix="126.com"
######################
def send_mail(to_list,sub,content):
    '''
    to_list:发给谁
    sub:主题
    content:内容
    send_mail("aaa@126.com","sub","content")
    '''
    me=mail_user+"<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEText(content)
    msg['Subject'] = sub
    msg['From'] = me
    msg['To'] = ";".join(to_list)
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        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,"subject","content"):
        print "发送成功"
    else:
        print "发送失败"

有问题请指教


《 “简单的python smtp发邮件代码” 》 有 20 条评论

  1. 试了一下,关于这个在网页版的邮件系统中文是没问题的,但是在客户端就会有问题,比如foxmail等 望给个解决办法,ths : )

  2. 不错 用了,不过有些邮箱好像有限制,网易企业邮箱提示:用户被锁定。

  3. 我在windows xp平台,用python3.2试了下。内容有中文是没问题的,但是标题中如果带有中文,就会出现错误:”UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 10-11: ordinal not in range(128)”,虽然知道是编码的问题,也在网上搜索过了,但是就是没有解决。我感觉网上的答案是针对Linux系统的,在linux上我已经测试过了,标题或内容中带有中文,都已经解决了,但是对于windows平台就是没解决,希望能给个标题带中文且能在windows上成功运行的代码,谢谢! zhouciming@163.com

    • 俺都写了是126的,你非要用gg的。
      gmail的应该不是这个端口,而且可能走的是加密协议,你再去google百度一下相关信息。:)

  4. 您好,运行这个程序,虽然打印是“发送成功”,但邮箱里并没有受到,请问是什么问题,谢谢

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据