`
jishublog
  • 浏览: 896899 次
文章分类
社区版块
存档分类
最新评论

Python通用发送邮件模块

 
阅读更多

需求:

1.发送邮件

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

3.支持多接收人

4.支持附件

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


涉及模块:

smtplib, email


基于版本:

2.4

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


源代码:

#!/usr/bin/env python
#@author : wklken@yeah.ent
#@version : 0.1
#@desc: for mail sending.

import smtplib
import getopt
import sys
import os

from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase

from email.MIMEText import MIMEText
import 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:")
        #print sys.argv
        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()



The end!

转载请注明出处,Thx!


wklken

Blog: wklken.sinaapp.com

Email: wklken@yeah.net

2012-09-02


分享到:
评论

相关推荐

    基于python开发的自动下载outlook邮箱附件程序

    2. 附件:在电子邮件中,附件是随邮件一起发送的额外文件,可以是文档、图片、音频或视频等各类格式。 3. Outlook:Microsoft Outlook是一款广泛使用的个人信息管理软件,包含电子邮件、日历、联系人管理等功能,也...

    Python-将MicrosoftOutlookmsg文件转换为emlMIME消息文件的Python库

    然而,.eml文件是一种更通用的邮件格式,通常由基于Internet标准(如RFC822和RFC5322)的邮件系统所使用,这种格式可以被大多数邮件客户端读取和解析。 Python库`msgconvert`是专门用来进行这种转换的工具。这个库...

    python3.4实现邮件发送功能

    Python,作为一种广受欢迎的编程语言,通过其标准库中的`smtplib`模块,可以非常便捷地实现邮件发送功能。以下将基于Python3.4版本的环境,介绍如何利用Python发送带有中文附件的邮件。 首先,我们需要导入必要的...

    python同时给两个收件人发送邮件的方法

    smtplib是Python处理SMTP通信的核心模块,而string模块则包含了处理字符串的一些通用函数,例如splitfields用于分隔字符串。 以下是一个简单的Python脚本示例,演示了如何使用smtplib发送邮件到两个不同的收件人: ...

    PYTHON网络编程基础pdf

    Python是一种高级、通用的编程语言,以其简洁明了的语法和强大的功能而受到广大程序员的青睐。在Python中进行网络编程是开发网络应用、服务和客户端的重要方式,它可以帮助我们构建与互联网交互的程序。本资源...

    SMTP发送邮件 SSL

    综上所述,SMTP发送邮件结合SSL或TLS提供了安全的邮件传输手段,支持发送附件的功能使得邮件更加实用,而跨平台的设计则确保了代码的通用性和可移植性。这些技术在现代电子邮件系统中扮演着至关重要的角色。

    Python-一些有用的Python脚本

    6. **自动化任务**:定时任务、脚本化的工作流程,如邮件发送、数据备份等。 7. **错误和异常处理**:如何优雅地处理程序运行时可能出现的问题,提高代码健壮性。 8. **面向对象编程**:类的定义、继承、封装和...

    python模块smtplib实现纯文本邮件发送功能

    ### Python 模块 smtplib 实现纯文本邮件发送功能详解 在现代软件开发过程中,电子邮件作为重要的通信手段之一,常被用于系统通知、用户验证、报告生成等多种应用场景。Python 作为一种广泛使用的编程语言,提供了...

    B站黑马程序员Python教程学习笔记.zip

    4. **自动化脚本**:编写日常任务的自动化脚本,如文件管理、邮件发送等。 通过黑马程序员的Python教程,你将逐步建立起扎实的Python编程基础,并能应对各种实际问题,为进一步深入学习和应用Python打下坚实的基础...

    Python核心编程第二版

     9.2.2 通用换行符支持(UNS)   9.3 文件内建方法   9.3.1 输入   9.3.2 输出   9.3.3 文件内移动   9.3.4 文件迭代   9.3.5 其他   9.3.6 文件方法杂项   9.4 文件内建属性   9.5 ...

    Python使用logging模块实现打印log到指定文件的方法

    在Python中,logging模块预定义了很多种处理器,如StreamHandler(将日志输出到流,通常是控制台)、FileHandler(将日志输出到文件)、SMTPHandler(通过邮件发送日志)、HTTPHandler(通过HTTP发送日志)等。...

    基于Python的图形化服务器监控的设计和实现.pdf

    程序主要使用Python自带的标准模块来实现功能,同时也涉及到了第三方扩展模块,如psutil模块用于获取服务器硬件资源数据、os模块用于监测远程应用服务运行状态、matplotlib用于绘制图形化界面和写入日志文件、...

    名片管理系统,名片管理系统python,Python

    为了提高用户体验,系统可能还包含一些高级特性,比如自动识别扫描的名片图像并提取文本(这可能需要用到OCR技术,如`pytesseract`库),或者集成邮件发送功能,直接从系统内发送联系人电子邮件。 此外,考虑到数据...

    Python网络编程.pdf

    除了基本的套接字操作外,Python 的 `socket` 模块还提供了许多实用的功能。 ###### 2.7.1 基于解析器库的函数 这些函数主要用于 DNS 查询和其他与域名解析相关的操作。 ```python import socket # 获取主机名 ...

    访问接口得到二进制附件并发送邮件

    在IT行业中,自动发送邮件是一项常见的任务,尤其在自动化流程、通知系统以及数据报告中扮演着重要角色。...通过结合Python的相关库,我们可以轻松地将这些组件整合在一起,实现自动发送带有附件的邮件功能。

    python实验报告7 smtp协议.zip

    3. 发送邮件:创建邮件消息对象,可以使用email.mime模块中的类,如MIMEMultipart(多部分消息)和MIMEText(纯文本)、MIMEImage(图片)、MIMEBase(通用类型)等。然后使用`server.sendmail(sender, recipient, ...

    Python3零起点教程-廖雪峰.pdf

    - **电子邮件**:使用SMTP发送邮件,通过POP3协议接收邮件。 #### 十一、数据库操作 - **SQLite**:轻量级数据库系统的使用方法。 - **MySQL**:关系型数据库管理系统的基本操作。 - **SQLAlchemy**:Python环境下...

Global site tag (gtag.js) - Google Analytics