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

#!/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. 腾讯X5内核使用 Android WebView 的一些小问题

    大家好,我是博客小白,第一篇文章,文笔不好,务喷,希望能给各位提供点帮助 公司做个商城,然后我就简单的做个启动引导页,然后用个原生WebView套一下,加个加载动画,解决下第三方登录支付的返回问题,这 ...

  2. JSON - Qt 对 JSON的处理

    1.关于JSON的介绍参考www.json.org Qt提供处理JSON数据的支持.QJSonObject类用于封装JSON object:QJsonDocument类提供读写JSON文档的方法:QJ ...

  3. 微信小程序,超能装的实例教程

    序言 开始开发应用号之前,先看看官方公布的「小程序」教程吧!(以下内容来自微信官方公布的「小程序」开发指南) 本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果.这个小程序 ...

  4. ios用户体验

    如果转载此文,请注明出处:http://blog.csdn.net/paulery2012/article/details/25157347,谢谢! 前言: 本文是在阅读<ios用户体验> ...

  5. Docker入门01——Image

    1.获取镜像 2.列出镜像 3.创建镜像 3.1 修改已有镜像 3.2 使用Dockerfile创建镜像 创建Dickerfile文件 使用build来创建镜像 使用新创建的镜像来启动容器 4.移除镜 ...

  6. 粗谈shell脚本风格

    注意:此风格并非官方版本,为个人在编写和维护脚本程序时总结出来的民间版本.0. 开头:除去开头的#!/bin/bash,最前面的就是脚本描述注释了,视个人喜好而定,例如: ############## ...

  7. oracle 数据库删除表或表数据恢复问题

    oracle恢复误删除的数据:使用闪回,ORACLE 10G及以上版本! 1. flashback table table_name to timestamp systimestamp-1; (sys ...

  8. 实战Tomcat配置SSL,使用openssl制作证书

    制作证书以及Tomcat配置 搭建openssl环境,下载openssl并设置环境变量方便命令行的使用: 修改openssl配置文件,设置dir目录,如设置dir=e:/temp/openssl_ca ...

  9. 深入源码剖析String,StringBuilder,StringBuffer

    [String,StringBuffer,StringBulider] 深入源码剖析String,StringBuilder,StringBuffer [作者:高瑞林] [博客地址]http://ww ...

  10. 转:js中cookie的使用详细分析

    cookie机制将信息存储于用户硬盘,因此可以作为全局变量,这是它最大的一个优点.它可以用于以下几种场合. (1)保存用户登录状态.例如将用户id存储于一个cookie内,这样当用户下次访问该页面时就 ...