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

#!/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. Spark源码分析之Spark Shell(上)

    终于开始看Spark源码了,先从最常用的spark-shell脚本开始吧.不要觉得一个启动脚本有什么东东,其实里面还是有很多知识点的.另外,从启动脚本入手,是寻找代码入口最简单的方法,很多开源框架,其 ...

  2. ctags使用说明详解

    ctags使用说明详解 一.ctags是干什么的 ctags的功能:扫描指定的源文件,找出其中所包含的语法元素,并将找到的相关内容记录下来. 我用的是Exuberant Ctags 二.ctags可以 ...

  3. js文字滚动效果实现

    纯js实现,完整代码如下: <!doctype html> <html lang="en"> <head> <meta http-equi ...

  4. 对本地Solr服务器添加IK中文分词器实现全文检索功能

    在上一篇随笔中我们提到schema.xml中<field/>元素标签的配置,该标签中有四个属性,分别是name.type.indexed与stored,这篇随笔将讲述通过设置type属性的 ...

  5. 关于Monkey的一切都在这里

    关于Monkey的一切都在这里 版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有. 允许有条件转载,转载请附带底部二维码. 一.什么是Monkey Monkey是 ...

  6. 全文搜索 Contains 与like 的区别

    全文搜索:是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式. ...

  7. Easyui _treegrid 动态加载子节点

    <table id="dg" class="easyui-treegrid" title="数据字典列表" data-options= ...

  8. JavaScript技巧总结和本地存储(一)

    类型检测 typeof 一般用于js的基本数据类型(undefined,number,string,boolean.注意null检测的结构是object)检测,引用类型检测不准确. instanceo ...

  9. 中软卓越IT培训:给IT程序员的18个忠告

    1 .想清楚,写清楚,说清楚,才是真正的清楚! 2 .多花点时间沟通清楚需求,才能把握正确方向! 3 .修复需求错误的成本是代码错误的几十倍! 4 .程序员最大的坏习惯就是:急于动手写代码! 5 .提 ...

  10. 2017-02-23 switch case 循环语句

    另一个分支语句:switch..case.. switch(变量){    case 值:代码段;break;    case 值:代码段;break;    ...    default:代码段;b ...