文档章节

封装web.py发送邮件

ShortHand
 ShortHand
发布于 2016/10/08 18:09
字数 507
阅读 53
收藏 0

web.py是一个轻量级Python web框架,它简单而且功能强大。web.py是个开源项目。该框架由已故美国作家、Reddit联合创始人、RSS规格合作者、著名计算机黑客Aaron Swartz开发。web.py目前已被多家大型网站所用。web.py简单易学,只要有python基础,掌握web.py就非常容易。

1. web.py发送邮件:

email_test.py
# -*- coding: utf-8 -*-

from famiover.config.EmailConfig import EmailConfig
from famiover.util.email_util import send_email

if __name__ == "__main__":
    ec = EmailConfig()
    # 附件内容
    attachments = ['文件']
    # 抄送者
    cc = ['famiover@163.com']
    ec.config_default(header='headers', attachments=attachments, cc=cc)
    send_email(ec)

EmailConfig.py
# -*- coding: utf-8 -*-

import os

import web
from famiover.model.response import response
from famiover.util.object_util import *


class EmailConfig(object):
    """Email默认配置"""

    def __init__(self):
        self.attachments = []
        self.response = response()
        self.message = '详情请查看附件内容'  # 邮件内容
        self.subject = '邮件主题'  # 邮件主题
        self.to_address = ['famiover@163.com']  # 收件人邮箱
        self.from_password = 'from_password '  # 发件人邮箱密码
        self.from_address = 'famiover@163.com'  # 发件人邮箱

    def config_param(self, params):
        """设置额外参数"""
        for key, value in params.items():
            setattr(self, key, value)

    def config_validate(self):
        """"邮件配置验"""
        res = response()
        # 1.检查附件文件是否存在
        if has_property_len_ge_0(self, 'attachments'):
            for attachment in self.attachments:
                if not os.path.exists(attachment):
                    res.isOk = False
                    res.message = '附件%s文件不存在!' % attachment
                    return res
        # 2.检查发件人
        if not (self.from_address and self.from_password):
            res.isOk = False
            res.message = '发件人信息不对!'
            return res
        return res

    def config_web_default(self):
        """默认邮件配置"""
        web.config.smtp_server = 'smtp.exmail.qq.com'
        web.config.smtp_port = 25
        web.config.smtp_username = self.from_address
        web.config.smtp_password = self.from_password

    def config_default(self, **params):
        """默认邮件配置"""
        self.config_web_default()
        add_property_with_params(self, params)

send_email.py
# -*- coding: utf-8 -*-

import web
from famiover.util.object_util import *


def send_email(config):
    """根据配置对象发送邮件"""
    # 发件人
    from_address = config.from_address
    # 收件人
    to_address = config.to_address
    # 邮件主题
    subject = config.subject
    # 邮件消息
    message = config.message
    # 额外参数
    extra_param = {}
    if has_property_len_ge_0(config, 'attachments'):
        extra_param['attachments'] = config.attachments
    # 抄送
    if has_property_len_ge_0(config, 'cc'):
        extra_param['cc'] = config.cc
    # 暗送
    if has_property_len_ge_0(config, 'bcc'):
        extra_param['bcc'] = config.bcc
    res = config.response
    if res.isOk:
        if len(extra_param) > 0:
            web.sendmail(from_address, to_address, subject, message, **extra_param)
        else:
            web.sendmail(from_address, to_address, subject, message)
    else:
        print(res.message)

response.py
# -*- coding: utf-8 -*-

class response:
    '验证结果实体类'

    # 返回消息
    __message = ''

    # 验证是否通过
    __isOk = True

    def __init__(self):
        pass

    @property
    def message(self):
        return self.__message

    @message.setter
    def message(self, message):
        self.__message = message

    @property
    def isOk(self):
        return self.__isOk

    @isOk.setter
    def isOk(self, isOk):
        self.__isOk = isOk

© 著作权归作者所有

共有 人打赏支持
ShortHand
粉丝 3
博文 78
码字总数 16508
作品 0
静安
高级程序员
私信 提问
初步实现 Mail 插件 —— 发送邮件

本文是《轻量级 Java Web 框架架构设计》的系列博文。 在 Java 应用系统中为了实现邮件发送与收取功能,往往都会选择使用 JavaMail API。但该 API 涉及的内容比较繁琐,概念与细节都比较多,...

黄勇
2013/11/24
3.3K
12
web.py 数据库操作指南

web.py是一个小巧灵活的框架,最新稳定版是0.33。这里不介绍web开发部分,介绍下关于数据库的相关操作。 很多Pyer一开始都喜欢自己封装数据库操作类,本人亦如此。不过后来通过观摩web.py的源...

小编辑
2010/03/21
6.9K
0
JavaEE-JavaMail 01 简介

一. JavaMail 简介 JavaMail API提供了一种与平台无关和协议独立的框架来构建邮件和消息应用程序 JavaMail API提供了一组抽象类定义构成一个邮件系统的对象, 它是阅读, 撰写和发送电子信息的...

不落的太阳Sean
2015/11/26
62
0
4、SpringBoot------邮件发送(2)

开发工具:STS 代码下载链接:https://github.com/theIndoorTrain/Springboot/tree/0d6194d6ea2d7f4e19791a3d3f3167f861f6453d 前言: 在上一篇博客中,我们写了简单邮件的发送和带附件的邮件...

零度微笑
07/16
0
0
Python - 面向对象编程 - 初级篇

一、概述 1、 面向过程编程 面向过程编程往往用一长段代码来实现指定功能,在开发过程中最常见的操作就是复制粘贴,即:将之前实现的代码块复制到现需功能处。 2、 函数式编程 将具有相同功能...

MyPy
2016/11/06
17
0

没有更多内容

加载失败,请刷新页面

加载更多

可自定义扩展底部列表对话框ListBottomSheetDialogFragment

因为需要,为了方便,构建了一个可以自定义扩展的底部列表对话框,可以应付大部分场景。 效果图如下: 1.默认实现: 2.自定义列表实现 3.自定义头部和列表实现 一.可实现功能 1.默认可实现通...

明月春秋
42分钟前
1
0
数据库---增删改查

增:insert into 表名(列名1,列名2) values(‘列值1’,‘列值2’) 多行数据处理:insert into 表名(列名1,列名2) select ‘列值1’,‘列值2’ union select ‘列值1.1’,‘列值2.2...

森林之下
43分钟前
2
0
分布式/集群下session共享方案汇总

除去那些对容器依赖特别高的方案(如: 基于Tomcat的memcached-session-manager / tomcat-redis-session-manager,基于Jetty的jetty-nosql-memcache / jetty-session-redis ),自己整理了下...

哥本哈根的小哥
今天
2
0
Vue中的缩写:v-bind、v-on

v-bind 缩写:: 预期:any (with argument) | Object (without argument) 参数:attrOrProp (optional) 修饰符: .prop - 被用于绑定 DOM 属性。 .camel - (2.1.0+) 将 kebab-case 特性名转换......

文文1
今天
2
0
epoll中使用

1、一个线程epoll_wait时,另一个线程调用epoll_ctl是安全的。 2、使用edge触发,在socket有数据到来后,不收取数据,再次调用epoll_ctl将socket加入,仍会触发下一次动作。 asio用该方法来发...

gelare
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部