python之smtplib发邮件
第一版: 认证发信,不支持附件
#!/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发邮件的更多相关文章
- python 利用 smtplib发邮件
import smtplib from email.mime.text import MIMEText title = "request build error" content ...
- EDM营销算法:python自动批量发邮件
EDM营销:全称Email Direct Marketing,即电子邮件营销.企业可以通过使用EDM软件向目标客户发送EDM邮件,建立同目标顾客的沟通渠道,向其直接传达相关信息,用来促进销售.EDM软 ...
- python连接数据库自动发邮件
python连接数据库实现自动发邮件 1.运行环境 redhat6 + python3.6 + crontab + Oracle客户端 2.用到的模块 3.操作步骤 (1)安装python3.6参考 ...
- Python自定义任务发邮件提醒
前言 在工作中,有时会有一些定期需要执行的任务或在将来某一天需要执行的任务,为避免疏漏,设计个小工具,发邮件提醒自己去处理. 方案简介 1.建立一个Excel文件,里面定义好待提醒的任务 2.建立一个 ...
- Python smtplib发邮件
常用邮箱SMTP.POP3域名及其端口号 发送普通文本内容的邮件 import smtplib from email.header import Header from email.mime.text ...
- python实现自动发邮件
Python有两个内置库:smtplib和email,可以实现邮件功能,无需下载,直接import导入. smtplib库负责发送邮件 Email库负责构造邮件格式和内容 邮件发送需要遵守SMTP协议 ...
- SNMPv3/pygal制图/smtplib发邮件
SNMPv3 SNMPv3在路由器端的配置 这个我都没配置过,还得现学现卖这个链接说的是SNMPv3的基本配置 这个链接说的是SNMPv3的view命令,用于管理员可以看到哪些层级的内容 1) 配置 ...
- Python学习笔记——发邮件
参考:Python3实现163邮箱SMTP发送邮件 1.首先需要注册一个网易的邮箱,开启smtp服务,并使用其授权码 2.发送邮件的Python脚本 #!/usr/bin/python # -*- c ...
- python使用SMTP发邮件时使用Cc(抄送)和Bcc(密送)
SMTP发送邮件的时候,并没有特殊的通信语句告诉邮件服务器 谁是主送,谁是抄送/密送,这三个角色都是以同样的方式告诉邮件服务器的,然后重点在邮件内容里. 邮件内容分为头和体两部分(就像http),头部 ...
随机推荐
- testNG实现test失败后重复执行,
test失败自动执行大大提高测试结果的准确性, 1.修改testNG源码实现test失败自动执行, 首先获取testng的源码, 获取源代码,构建过程: $ git clone git://githu ...
- java初级开发程序员(第六单元)
1.for循环结构: 循环结构分为四个部分. >初始部分:设置循环的初始状态,如设置记录循环次数的变量i为0. >循环体:重复执行的代码,即输出“好好学习,天天向上!”. >迭代部分 ...
- 理解javascript中参数的按值传递
有人认为 JS 中参数传递:基本数据类型按值传递:引用类型按引用传递.呵呵 javascript中所有参数是按值传递的 但是当传入的参数是引用类型时,便带来了疑惑 引用类型值保存在内存中,而JS是不能 ...
- Linux下自动备份MySQL
使用expect和mysqldump备份 expect expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预. 例如,执行shell脚本的过程中,需要输入用户名.密码 ...
- Ionicons的使用
安装 参考Ionicons npm install react-native-vector-icons --save 这时候可能会报错:npm WARN deprcated lodash@4.2.0: ...
- 来自高维的对抗 - 逆向TinyTool自制
一.序 无论是逆向分析还是漏洞利用,我所理解的攻防博弈无非是二者在既定的某一阶段,以高维的方式进行对抗,并不断地升级维度.比如,逆向工程人员一般会选择在Root的环境下对App进行调试分析,其是以ro ...
- Ognl值栈对象及struts标签
用户每次访问struts的action,都会创建一个Action对象.值栈对象.ActionContext对象:然后把Action对象放入值栈中: 最后再把值栈对象放入request中,传入jsp页面 ...
- Hibernate双向关联的增删改操作的属性
双向关联关系下的增删改操作的属性 1.cascade属性: eg:<set name = "emps" cascade="s ...
- Lambda&Java多核编程-5-函数式接口与function包
从前面的总结中我们知道Lambda的使用场景是实现一个函数式接口,那么本篇就将阐述一下何为函数式接口以及Java的function包中提供的几种函数原型. 函数式接口 早期也叫作SAM(Single ...
- 向php提交数据及json
php中提交表单有两种方法,即: (1)利用表单提交 例: <form action="php文件名" method='提交方式'> username:<inpu ...