Python通用邮件发送(smtplib)
admin
2023-07-31 00:37:14
0

使用到的模块 smtplib, email

代码托管位置 github-pytools

需求

1.发送邮件

2.不需要登录任何邮箱等等

3.支持多接收人

4.支持附件

5.支持命令行+方法调用

基于版本

2.4
使用2.7和3.x的童鞋,可能需要修改下import信息

源代码

使用官网一份代码进行重新修改,扩增功能

代码托管地址 github-pytools

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 #!/usr/bin/env python#@author : wklken@yeah.ent#@version : 0.1#@desc: for mail sending. import smtplibimport getoptimport sysimport os from email.MIMEMultipart import MIMEMultipartfrom email.MIMEBase import MIMEBase from email.MIMEText import MIMETextimport email.Encoders as encoders def send_mail(mail_from, mail_to, subject, msg_txt, files=[]):    # Create message container – the correct MIME type is multipart/alternative.    msg = MIMEMultipart(\’alternative\’)    msg[\’Subject\’] = subject    msg[\’From\’] = mail_from    msg[\’To\’] = mail_to     # Create the body of the message (a plain-text and an HTML version).    #text = msg    html = msg_txt     # Record the MIME types of both parts – text/plain and text/html.    #part1 = MIMEText(text, \’plain\’)    part2 = MIMEText(html, \’html\’)     # Attach parts into message container.    # According to RFC 2046, the last part of a multipart message, in this case    # the HTML message, is best and preferred.    #msg.attach(part1)    msg.attach(part2)     #attachment    for f in files:        #octet-stream:binary data        part = MIMEBase(\’application\’, \’octet-stream\’)        part.set_payload(open(f, \’rb\’).read())        encoders.encode_base64(part)        part.add_header(\’Content-Disposition\’, \’attachment; filename=\”%s\”\’ % os.path.basename(f))        msg.attach(part)     # Send the message via local SMTP server.    s = smtplib.SMTP(\’localhost\’)    # sendmail function takes 3 arguments: sender\’s address, recipient\’s address    # and message to send – here it is sent as one string.     mailto_list = mail_to.strip().split(\”,\”)    if len(mailto_list) > 1:        for mailtoi in mailto_list:            s.sendmail(mail_from, mailtoi.strip(), msg.as_string())    else:        s.sendmail(mail_from, mail_to, msg.as_string())     s.quit()    return True def main():    files = []    try:        opts, args = getopt.getopt(sys.argv[1:], \”f:t:s:m:a:\”)        for op, value in opts:            if op == \”-f\”:                mail_from = value            elif op == \”-t\”:                mail_to = value            elif op == \”-s\”:                subject = value            elif op == \”-m\”:                msg_txt = value            elif op == \”-a\”:                files = value.split(\”,\”)    except getopt.GetoptError:        print(sys.argv[0] + \” : params are not defined well!\”)     print mail_from, mail_to, subject, msg_txt    if files:        send_mail(mail_from, mail_to, subject, msg_txt, files)    else:        send_mail(mail_from, mail_to, subject, msg_txt) if __name__ == \”__main__\”:    main()

使用

CMD:

12345 ./sendEmail.py f \”fromSomeOne@XXX.com\”             t \”toA@XXX.com,toB@XXX.com\”             s \”the subject of mail\”             m \”the mail Message.Main Content\”             a \”attachment1_path,attachment2_path\”

IMPORT:

12 import sendEmailsendEmail.send_mail(mail_from, mail_to, subject, msg_txt, files)

The end!

相关内容

热门资讯

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