文档章节

封装web.py发送邮件

ShortHand
 ShortHand
发布于 2016/10/08 18:09
字数 507
阅读 56
收藏 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
静安
高级程序员
私信 提问
搜狐邮件中心招聘python开发工程师

岗位职责:邮件中心webmail开发,包括个人邮箱和企业邮箱,有相关行业经验的优先。 -有python编程经验,熟悉相应的开源框架者(django/web.py/twisted)优先考虑; -熟练使用MySql数据库,擅长...

yanjiang
2011/05/08
1K
6
web.py 数据库操作指南

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

小编辑
2010/03/21
7.2K
0
初步实现 Mail 插件 —— 发送邮件

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

黄勇
2013/11/24
3.3K
12
Sendcloud 邮件 API 的 Go 封装--Go Sendcloud

这是一个 Sendcloud 邮件发送服务的 Go 语言封装包,可利用它在 Go 程序中通过 Sendcloud 发送邮件。 对 SendCloud 发送邮件 API 的封装,现已将 API 接口切换到了 v2 版本,如果想使用 v1 版...

SmartWalle
2017/03/02
229
0
Python - 面向对象编程 - 初级篇

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

MyPy
2016/11/06
17
0

没有更多内容

加载失败,请刷新页面

加载更多

百度黄埔学院将培养一批首席AI架构师,为“国之重器”赋能

深度学习高端人才不仅是AI发展的重要养分,也是企业转型AI巨大推动力。2019年1月19日,百度黄埔学院——深度学习架构师培养计划在百度科技园举行开学典礼,深度学习技术及应用国家工程实验室...

深度学习之桨
17分钟前
0
0
扒站wget仿站

wget -c -r -p -np -k http://xxx.com/xxx 其中: -c, --continue (断点续传) 接着下载没下载完的文件 -r, --recursive(递归) specify recursive download.(指定递归下载) -p, --page...

临江仙卜算子
20分钟前
0
0
Nextjs+React非页面组件SSR渲染

@随风溜达的向日葵 Nextjs Nextjs是React生态中非常受欢迎的SSR(server side render——服务端渲染)框架,只需要几个步骤就可以搭建一个支持SSR的工程(_Nextjs_的快速搭建见Next.js入门)...

随风溜达的向日葵
今天
0
0
如何在 Linux 系统查询机器最近重启时间

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名...

来来来来来
今天
3
0
Redis协议是什么样的

前言 我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很简单,基于socket,监听6379端口,解析数据就可以了。 redis协议 解析数据的过程主要依赖于redis的协议了。 我们...

春哥大魔王的博客
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部