文档章节

封装web.py发送邮件

ShortHand
 ShortHand
发布于 2016/10/08 18:09
字数 507
阅读 46
收藏 0
点赞 1
评论 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
博文 76
码字总数 16508
作品 0
静安
高级程序员
web.py 数据库操作指南

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

小编辑 ⋅ 2010/03/21 ⋅ 0

初步实现 Mail 插件 —— 发送邮件

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

黄勇 ⋅ 2013/11/24 ⋅ 12

Python下发布web service(三):web.py简介及使用

web.py简介 web.py 是一个轻量级Python web框架,它简单而且功能大。web.py是一个开源项目。该框架由美国作家、Reddit联合创始人、RSS规格合作创造者、著名计算机黑客Aaron Swartz开发。web...

艾柯 ⋅ 2014/01/14 ⋅ 0

Sendcloud 邮件 API 的 Go 封装--Go Sendcloud

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

SmartWalle ⋅ 2017/03/02 ⋅ 0

JavaEE-JavaMail 01 简介

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

不落的太阳Sean ⋅ 2015/11/26 ⋅ 0

Python - 面向对象编程 - 初级篇

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

MyPy ⋅ 2016/11/06 ⋅ 0

简单而直接的Python web 框架:web.py

web.py 是一个Python 的web 框架,它简单而且功能强大。web.py 是公开的,无论用于什么用途都是没有限制的。 先让大家感受一下web.py 的简单而强大: import web urls = ( '/(.*)', 'hello'...

小编辑 ⋅ 2010/03/21 ⋅ 8

SendCloud 的 Java 开发包--sendcloud4j

sendcloud4j 是 SendCloud 邮件服务的 Java 语言封装包。 特点: 支持 邮箱API v2 普通发送和模板发送 支持批量发送(模板批量变量替换) 支持添加附件发送 Maven <dependency> <groupId>io.j...

Denger_Tung ⋅ 2016/03/21 ⋅ 1

JAVA邮件发送Simple Java Mail

前言 在我们日常工作中,邮件发送服务经常会用到,我们常用的java邮件服务实现方案有:java原生自带的javamail、apache commons mail工具包、spring mail。但是个人使用这么久而言,感觉使用...

liangzzz ⋅ 2017/07/21 ⋅ 0

初步实现 Mail 插件 —— 收取邮件

本文是《轻量级 Java Web 框架架构设计》的系列博文。 在上篇中描述了发送邮件的主要过程,今天我想和大家分享一下 Smart Mail 插件的另外一个功能 —— 收取邮件,可能没有发送邮件那么常用...

黄勇 ⋅ 2013/11/25 ⋅ 3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

1.01-StringUtils的使用

import org.apache.commons.lang.StringUtils; 一、StringUtils 常用的方法: 1. 判断某一字符串是否为空 , 为空的标准是 str==null 或 str.length()==0 StringUtils.isEmpty(null) ==>tr......

静以修身2025 ⋅ 15分钟前 ⋅ 0

几道Spring 面试题

1、BeanFactory 接口和 ApplicationContext 接口有什么区别? ApplicationContext 接口继承BeanFactory接口 Spring核心工厂是BeanFactory BeanFactory采取延迟加载,第一次getBean时才会初始...

职业搬砖20年 ⋅ 16分钟前 ⋅ 0

包饺子

http://storage.slide.news.sina.com.cn/slidenews/77_ori/2018_24/74766_826131_625489.gif

霜叶情 ⋅ 18分钟前 ⋅ 0

兑吧:从自建HBase迁移到阿里云HBase实战经验

摘要: 业务介绍 兑吧集团包含兑吧网络和推啊网络,兑吧网络是一家致力于帮助互联网企业提升运营效率的用户运营服务平台,提供积分商城和媒体运营服务。推啊网络是一家互动式广告平台,经过多...

猫耳m ⋅ 29分钟前 ⋅ 0

xml解析

方法一: String s_xml1 = "<xml>" + "<head>lalalalal</head>" + "<body>1234</body>" + "</xml>"; try { DocumentBuilderFactory documentBuilderFactory......

GithubXD ⋅ 30分钟前 ⋅ 0

reuse stream

Although Java streams were designed to be operated only once, programmers still ask how to reuse a stream. From a simple web search, we can find many posts with this same issue ......

idoz ⋅ 30分钟前 ⋅ 0

兑吧:从自建HBase迁移到阿里云HBase实战经验

摘要: 业务介绍 兑吧集团包含兑吧网络和推啊网络,兑吧网络是一家致力于帮助互联网企业提升运营效率的用户运营服务平台,提供积分商城和媒体运营服务。推啊网络是一家互动式广告平台,经过多...

阿里云云栖社区 ⋅ 32分钟前 ⋅ 0

从世界杯看国内运动体育社交新能量

2018年世界杯已正式拉开帷幕,一场全世界球迷的狂欢也正式开始。 世界杯影响力:30亿+球迷的狂欢+社交话题 世界杯这个超级IP和对社交网络的引爆让更多的人目光聚焦到国内运动体育社交这个层...

ThinkSNS账号 ⋅ 32分钟前 ⋅ 0

不固定值替换

<?php$arr = 20;$data = str_replace(array(10,20,30,40),array("blue","red","green","yellow"),$arr);print_r($data);...

nsns ⋅ 34分钟前 ⋅ 0

Job for nginx.service failed 错误解决方案

今天刚在centos7上安装了nginx-1.2.11,/etc/init.d/nginx start启动时,出现 Job for nginx.service failed because the control process exited with error code. See "systemctl status n......

河图再现 ⋅ 36分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部