Python 发送邮件

使用默认的django的发送邮件,只适用于单邮箱。

作者:海瑞博客 http://www.hairuinet.com/

setting中配置

# send e-mail

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'  #email后端

EMAIL_USE_TLS = False   #是否使用TLS安全传输协议

EMAIL_USE_SSL = True    #是否使用SSL加密,qq企业邮箱要求使用

EMAIL_HOST = 'smtp.exmail.qq.com'   #发送邮件的邮箱 的 SMTP服务器,这里用了qq企业邮箱

EMAIL_PORT = 465     #发件箱的SMTP服务器端口

EMAIL_HOST_USER = 'hairui@hairuinet.com'    #发送邮件的邮箱地址

EMAIL_HOST_PASSWORD = 'hairui2017HAIRUI'         #发送邮件的邮箱密码

在视图中使用

from django.core.mail import send_mail

# send_mail的参数分别是  邮件标题,邮件内容,发件箱(settings.py中设置过的那个),收件箱列表(可以发送给多个人),失败静默(若发送失败,报错提示我们)

send_mail('python django 测试邮件', '你好朋友!人生苦短,我爱python!.', 'hairui@hairuinet.com',

['574601625@qq.com'], fail_silently=False)

以上有个问题就是,你配置好了,不能修改。。。网络大部分是这样写的?http://www.hairuinet.com/

如何写成动态的呢?

我们可以写一个类,初始化的时候可以将信息保存起来,通过判断是否加密验证去做处理。就可以啦!

我已经封装好了!直接拿去用吧

 #!/usr/bin/env python
# -*- coding=utf-8 -*-
from smtplib import SMTP_SSL,SMTP
from email.header import Header
from email.mime.text import MIMEText
import smtplib class SendMail: def __init__(self,template_id,sendname, toname, title, content):
self.mail_host = 'smtp.qq.com' # 设置服务器
self.mail_user = 'hairui@hairuinet.com' # 用户名
self.mail_pass = 'hairuinet.com' # 口令
self.mail_port = 25 # 端口
self.mail_ssh = False # 是否是加密端口
self.content = content # 邮件内容
self.sendname = sendname
self.toname = toname
self.title = title # 邮件标题
self.encoding = "utf-8" # 邮件编码格式
self.sender = 'member@kylinclub.org' #发件地址
self.receivers = '574601624@qq.com' # 收件箱 def start(self):
self.msg()
if self.mail_ssh:
self.ssh()
else:
self.pt() def msg(self):
self.msg = MIMEText(self.content, "plain", self.encoding)
self.msg["Subject"] = Header(self.title, self.encoding)
self.msg["from"] = self.mail_user
self.msg["to"] = self.toname def ssh(self):
smtp = SMTP_SSL(self.mail_host)
smtp.set_debuglevel(0)
smtp.ehlo(self.mail_user)
smtp.login(self.mail_user,self.mail_pass)
smtp.sendmail(self.mail_user, self.receivers, self.msg.as_string())
smtp.quit() def pt(self):
server = smtplib.SMTP(self.mail_host, self.mail_port)
server.set_debuglevel(1)
server.login(self.mail_user, self.mail_pass)
server.sendmail(self.mail_user, [self.receivers,], self.msg.as_string())
server.quit() if __name__ == '__main__':
obj = SendMail(1,'海瑞网络','海瑞','密码找回','内容:这个海瑞网络发送的测试邮件',)
obj.start()

本文作者为原著,转载请保留本文链接!http://www.hairuinet.com/

python 之发送邮件服务[原著] 海瑞博客的更多相关文章

  1. [Python爬虫笔记][随意找个博客入门(一)]

    [Python爬虫笔记][随意找个博客入门(一)] 标签(空格分隔): Python 爬虫 2016年暑假 来源博客:挣脱不足与蒙昧 1.简单的爬取特定url的html代码 import urllib ...

  2. python实现的文本编辑器 - Skycrab - 博客频道 - CSDN.NET

    Download Qt, the cross-platform application framework | Qt Project Qt 5.2.1 for Windows 64-bit (VS 2 ...

  3. python—webshell_醉清风xf_新浪博客

    python—webshell_醉清风xf_新浪博客 python—webshell (2012-05-23 09:55:46) 转载▼

  4. Python爬虫,看看我最近博客都写了啥,带你制作高逼格的数据聚合云图

    转载请标明出处: http://blog.csdn.net/forezp/article/details/70198541 本文出自方志朋的博客 今天一时兴起,想用python爬爬自己的博客,通过数据 ...

  5. Hello Python!用 Python 写一个抓取 CSDN 博客文章的简单爬虫

    网络上一提到 Python,总会有一些不知道是黑还是粉的人大喊着:Python 是世界上最好的语言.最近利用业余时间体验了下 Python 语言,并写了个爬虫爬取我 csdn 上关注的几个大神的博客, ...

  6. python 全栈开发,Day83(博客系统子评论,后台管理,富文本编辑器kindeditor,bs4模块)

    一.子评论 必须点击回复,才是子评论!否则是根评论点击回复之后,定位到输入框,同时加入@评论者的用户名 定位输入框 focus focus:获取对象焦点触发事件 先做样式.点击回复之后,定位到输入框, ...

  7. python 全栈开发,Day81(博客系统个人主页,文章详情页)

    一.个人主页 随笔分类 需求:查询当前站点每一个分类的名称以及对应的文章数 完成这个需求,就可以展示左侧的分类 它需要利用分组查询,那么必须要会基于双下划线的查询. 基于双下划线的查询,简单来讲,就是 ...

  8. python 全栈开发,Day80(博客系统分析,博客主页展示)

    一.博客系统分析 数据库的构建 首先,我们分析一个博客系统的功能: 一个博客可以有多个标签(多对多) 一个博客可以有多条评论(一对多) 一个博客只可以有一个类别(多对一) 接下来,我们分析关系的属性: ...

  9. [python][django学习篇][7]设计博客视图(1)

    1上网的流程: 打开浏览器,输入网址(http://zmrenwu.com/) 浏览器根据输入网址,完成以下几件事:1识别服务器地址,2将用户的浏览意图打包成一个http请求,发送给服务器,等待服务器 ...

随机推荐

  1. java的sleep方法详解

    java的sleep方法详解: sleep并不是永久占有CPU,没有那个线程能永久占用CPU.它是指在自己时间片内睡眠,而不是急着交出CPU.yield()就是自己愿意立即交出时间片.因此一个线程sl ...

  2. Xamarin.Forms随手记

    1. 更新Android SDK要从VS的工具栏上SDK Manager那里更新,不要像我一样之前搞了好几份SDK放在不同的地方,结果把自己搞糊涂了,更新了半天(真的是花了半天时间)才发现更新的地方不 ...

  3. 手动创建maven项目+cmd+webapp+tomcat

    1.创建文件夹 2.在刚刚创建的文件夹目录下:创建一个scr文件夹和pom.xml文件 3.在pom.xml配置 <?xml version="1.0" encoding=& ...

  4. django生命周期示意图

    1.图示

  5. element el-tooltip 内容换行的方法

    <el-tooltip class="item" effect="light" placement="top-start">  ...

  6. 一句话说明==和equals的区别

    public class equals { public static void main(String[] args) { int x=10; int y=10; String str1=new S ...

  7. SpringBoot学习10:springboot整合mybatis

    需求:通过使用 SpringBoot+SpringMVC+MyBatis 整合实现一个对数据库中的 t_user 表的 CRUD 的操作 1.创建maven项目,添加项目所需依赖 <!--spr ...

  8. Chrome 调试工具的一些高阶功能

    Chrome 内置抓包工具 Block requests 截取长图 代码的覆盖率分析 Make site better Chrome 内置抓包工具 在浏览器地址栏输入chrome://net-inte ...

  9. Golang反射机制

    Go反射机制:在编译不知道类型的情况下,可更新变量.在运行时查看值.调用方法以及直接对它们的布局进行操作. 为什么使用反射 有时需要封装统一接口对不同类型数据做处理,而这些类型可能无法共享同一个接口, ...

  10. 详解MessageBox(),MsgBox函数的正确使用

    //或者使用chr(13),chr(10)效果一样 MsgBox "a"&chr(13)&"b"&chr(10)&"c ...