python_send_mail_implement_example
admin
2023-07-31 01:44:00
0

python_send_mail_example

python 中 email模块、smtplib模块 使得处理邮件变得比较简单.

我这里参考网上小五义的一些代码,实现了一个简单的发送邮件例子,具体代码如下 :

常量脚本 constant_mail.py

#!/usr/bin/env python
# _*_ coding: utf-8 _*_

## date: 20160127

## 邮件相关配置变量
mail_to_list = [\"yourname01@x.com\", \"yourname02@x.com\"]
#mail_host = \"smtp.exmail.qq.com:465\"
mail_host = \"smtp.exmail.qq.com:25\"
mail_user = \"yourname\"
mail_password = \"yourpassword\"
mail_postfix = \"x.com\"
mail_from = mail_user + \" <\" +  mail_user + \"@\" + mail_postfix + \">\"
mail_user_address = \"yourname@x.com\"

# 发送内容相关配置
subject = \"default-email-subject\"
mail_type = \"plain\"

主脚本 send_mail.py

import sys
sys.path.append(\"./\")
import constant_mail
import os, smtplib, mimetypes, base64
from email.mime.text import MIMEText

## about var
mail_to_list = constant_mail.mail_to_list
mail_host = constant_mail.mail_host
mail_user = constant_mail.mail_user
mail_user_address = constant_mail.mail_user_address
mail_password = constant_mail.mail_password
mail_postfix = constant_mail.mail_postfix
mail_from = constant_mail.mail_from
mail_subject = constant_mail.subject
mail_type = constant_mail.mail_type

def get_mail_to_list(mailto):
    to_list = mailto.split(\",\")
    for i in range(0, len(to_list)):
        to_list[i] = to_list[i].strip()+\"@\" + mail_postfix
    return to_list

def send_mail(mail_to_list, subject, content, mail_type):
    me = mail_from
    message = MIMEText(content, _subtype=mail_type, _charset=\"utf-8\")
    message[\"Subject\"] = subject
    message[\"From\"] = me
    message[\"To\"] = \';\'.join(mail_to_list)

    try:
        server = smtplib.SMTP()
        server.connect(mail_host)
        server.login(mail_user_address, mail_password)
        server.sendmail(my_info, mail_to_list, message.as_string())
        server.close()
        return True
    except Exception, e:
        print >> sys.stderr, \"[ERROR]: %s\" % str(e)
        sys.exit(-1)

def main():
    print len(sys.argv)
    if len(sys.argv) < 4 :
        print >> sys.stderr, \"args count : \" + str(len(sys.argv)) + \" is error!\"
        return
    mail_subject = sys.argv[1]
    content=sys.argv[2]
    mail_to_list = get_mail_to_list(sys.argv[3])
    if send_mail(mail_to_list, mail_subject, content, mail_type):
        print >> sys.stdout, \"[INFO] Email Auto Send Success!\"
    else:
        print >> sys.stderr, \"[ERROR] Email Auto Send Failure!\"

if __name__ == \'__main__\':
    main()

参考 : 小五义

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...