第一版: 认证发信,不支持附件

#!/usr/bin/env python
# ---------------------------------------
# author : Geng Jie
# email : gengjie@outlook.com
#
# Create Time: 2016/3/13 15:21
# ----------------------------------------
import smtplib # 定义邮件服务器地址以及端口
SMTP_HOST = 'smtp.xxx.com'
SMTP_PORT = '25'
# 定义发件人,密码,收件人
MAIL_USER = 'xxx@xxx.com'
PASSWD = 'xxxxxxx'
MAIL_TO = 'xxxx@xxx.com'
# 定义邮件主题,内容
MAIL_SUB = '测试邮件'
MAIL_CON = '''
Hi, python: 最近好吗?好久不见.
''' message = """From: {0}
To: {1}
Subject: {2}
{3}
""".format(MAIL_USER, MAIL_TO, MAIL_SUB, MAIL_CON) try:
smtpObj = smtplib.SMTP(SMTP_HOST, SMTP_PORT)
smtpObj.login(MAIL_USER, PASSWD)
smtpObj.sendmail(MAIL_USER, MAIL_TO, message.encode('GBK'))
print('Successfully send email !')
smtpObj.quit() except smtplib.SMTPException as e:
print(e)
print('Error: unable to send mail !')

  

第二版,写成模块,可调用使用

 import smtplib
from email.mime.text import MIMEText
import socket class EasySendmail:
''' e = ClassMail.EasySendmail(Port=25, auth=True)
default smtp port : 25
# 默认smtp的端口是25,若需要更改则设置port=xxx
# 默认是认证发信,若要匿名发信则需设置auth=False
'''
def __init__(self, port=25, auth=True):
self.port = port
self.auth = auth @classmethod
def setmail(cls, host, sender, passwd, mail_to, mail_sub, content):
'''You must set attr:
Host : mailServer exp: smtp.163.com
Sender: mail from user
Passwd: user passwd
Mail_to: To user
Mail_sub: mail subject
content: message ''' cls.host = host
cls.sender = sender
cls.passwd = passwd
cls.mail_to = ';'.join(mail_to)
cls.mail_sub = mail_sub
cls.content = content @property
def sendmail(self):
'''sendmail: Start Connect server to send mail .'''
self.message = """From: {0}
To: {1}
MIME-Version: 1.0
Content-type: text/plain
Subject: {2} {3}
""".format(self.sender, self.mail_to, self.mail_sub, self.content) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(10)
try:
s.connect((self.host, self.port))
# print('Connect {0}:{1} successfuly !'.format(self.host, self.port))
except Exception:
print('Error: Can connect {0}:{1} !'.format(self.host, self.port))
s.close() try:
print(self.auth)
smtpobj = smtplib.SMTP(self.host, self.port)
if self.auth is True:
smtpobj.login(self.sender, self.passwd)
smtpobj.sendmail(self.sender, self.mail_to, self.message.encode('GBK'))
print('Successfully send email !')
smtpobj.quit()
except smtplib.SMTPAuthenticationError as error:
print(error)
print('认证失败,请核对用户名和密码.')
except smtplib.SMTPException as error:
print(error)
print('Error: unable to send mail !')
except Exception as e:
print(e)

调用方法:

 #!/usr/bin/env python
# ---------------------------------------
# author : Geng Jie
# email : gengjie@outlook.com
#
# Create Time: 2016/3/14 13:19
# ---------------------------------------- import ClassMail if __name__ == '__main__':
# 初始化实例
# 默认smtp的端口是25,若需要更改则设置port=xxx
# 默认是认证发信,若要匿名发信则需设置auth=False
e = ClassMail.EasySendmail() # 定义邮件服务器
e.host = 'smtp.163.com'
# 定义发件人
e.sender = 'xxx@163.com'
# 定义发件人密码
e.passwd = '*******'
# 定义收件人,多个收件人,需用,号隔开
e.mail_to = ['xxxx@xxx.com'] # 定义邮件主题
e.mail_sub = 'EasyMail Test'
# 定义邮件正文
e.content = """Hi, Tony: How are you ?
"""
# 调用发信方法发送信件
e.sendmail

python之smtplib发邮件的更多相关文章

  1. python 利用 smtplib发邮件

    import smtplib from email.mime.text import MIMEText title = "request build error" content ...

  2. EDM营销算法:python自动批量发邮件

    EDM营销:全称Email Direct Marketing,即电子邮件营销.企业可以通过使用EDM软件向目标客户发送EDM邮件,建立同目标顾客的沟通渠道,向其直接传达相关信息,用来促进销售.EDM软 ...

  3. python连接数据库自动发邮件

    python连接数据库实现自动发邮件 1.运行环境 redhat6 + python3.6 + crontab + Oracle客户端 2.用到的模块  3.操作步骤 (1)安装python3.6参考 ...

  4. Python自定义任务发邮件提醒

    前言 在工作中,有时会有一些定期需要执行的任务或在将来某一天需要执行的任务,为避免疏漏,设计个小工具,发邮件提醒自己去处理. 方案简介 1.建立一个Excel文件,里面定义好待提醒的任务 2.建立一个 ...

  5. Python smtplib发邮件

    常用邮箱SMTP.POP3域名及其端口号 发送普通文本内容的邮件 import smtplib from email.header import Header from email.mime.text ...

  6. python实现自动发邮件

    Python有两个内置库:smtplib和email,可以实现邮件功能,无需下载,直接import导入. smtplib库负责发送邮件 Email库负责构造邮件格式和内容 邮件发送需要遵守SMTP协议 ...

  7. SNMPv3/pygal制图/smtplib发邮件

    SNMPv3 SNMPv3在路由器端的配置 这个我都没配置过,还得现学现卖这个链接说的是SNMPv3的基本配置 这个链接说的是SNMPv3的view命令,用于管理员可以看到哪些层级的内容 1) 配置 ...

  8. Python学习笔记——发邮件

    参考:Python3实现163邮箱SMTP发送邮件 1.首先需要注册一个网易的邮箱,开启smtp服务,并使用其授权码 2.发送邮件的Python脚本 #!/usr/bin/python # -*- c ...

  9. python使用SMTP发邮件时使用Cc(抄送)和Bcc(密送)

    SMTP发送邮件的时候,并没有特殊的通信语句告诉邮件服务器 谁是主送,谁是抄送/密送,这三个角色都是以同样的方式告诉邮件服务器的,然后重点在邮件内容里. 邮件内容分为头和体两部分(就像http),头部 ...

随机推荐

  1. phpcmsV9于基本介绍

    1.phpcms做企业站 2.内容+管理栏目=页面显示的导航 3.文件目录结构 根目录 api 接口文件目录 caches 缓存文件目录 confings 系统配置文件目录 caches_*系统缓存目 ...

  2. [APUE]进程关系(上)

    一.终端登录 1. 4.3+BSD终端登录 系统管理员创建一个通常名为/etc/ttys的文件,其中,每个终端设备有一行,每一行说明设备名和传到getty程序的参数,这些参数说明了终端的波特率.当系统 ...

  3. Javascript高级程序设计——Javascript简史+使用Javascript

    一.Javascipt简史 1.了解Javascript历史 Netscape(Javascript1.0).Microsoft(JScript)到JS1.1,再到ECMA-262标准 2.知道ECM ...

  4. javaweb 打包为安卓apk(1)-Hbuilder

    需求:当前已经完成java web项目开发,java web项目前端使用自适应框架(bootstrap),想使用最简单方式生成一个安卓apk,无需进行安卓开发(类似于手机浏览器访问一样) 要求:项目已 ...

  5. ConcurrentHashMap源码分析

    看过hashMap源码之后一直意犹未尽的感觉,挡不住我看其他的源码了.HashMap在单线程中非常好用,也不会出现什么问题,但是一到多线程就gg了,变的不灵了.我们有HashTable可以运用在多线程 ...

  6. ftp服务搭建

    文件传输服务 主配置文件目录/etc/vsftpd/vsftpd.conf 首先安装ftp服务器 yum install vsftpd 默认存放文件的目录  /var/ftp/pub 匿名登陆 创建一 ...

  7. 【转】简单的java缓存实现

    本文转自 http://my.oschina.net/u/866190/blog/188712 提到缓存,不得不提就是缓存算法(淘汰算法),常见算法有LRU.LFU和FIFO等算法,每种算法各有各的优 ...

  8. java数组、泛型、集合在多态中的使用及对比

    我们在使用数组,泛型集合的过程中不可避免的会碰到多态,或者说什么情况下能如何使用父数组引用子数组(集合.泛型)呢? 数组在多态中的使用 元素为父类型的数组引用可指向元素为子类型的数组对象 当数组被调用 ...

  9. 了解 : Odata 的 $filter

    api/jobPosts?$filter=company/name eq "string" //基本 api/orders?$filter=orderItem/product/EF ...

  10. 本地计算机上的XXX服务启动后停止,某些服务在未由其它服务或程序使用时将自动停止

    创建WindowsService,以及安装和卸载网上的资料一搜一大堆,在这里就不再做演示,只说明下博主在工作中使用WindowsService服务出现的错误,以及最终的结局方案. 1.启动window ...