文档章节

封装web.py发送邮件

ShortHand
 ShortHand
发布于 2016/10/08 18:09
字数 507
阅读 49
收藏 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
静安
高级程序员
web.py 数据库操作指南

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

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

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

黄勇
2013/11/24
3.3K
12
Python下发布web service(三):web.py简介及使用

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

艾柯
2014/01/14
0
0
4、SpringBoot------邮件发送(2)

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

零度微笑
07/16
0
0
JavaEE-JavaMail 01 简介

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

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

没有更多内容

加载失败,请刷新页面

加载更多

Kafka技术资料总结(不断更新中)

1、Kafka实践:到底该不该把不同类型的消息放在同一个主题中 2、Kafka剖析系列: Kafka剖析(一):Kafka背景及架构介绍 Kafka设计解析(二):Kafka High Availability (上)...

九州暮云
43分钟前
1
0
面向对象设计原则(OOP)

单一职责原则(Single responsibility principle)又称单一功能原则。它规定一个类应该只有一个发生变化的原因。 核心原则:低耦合,高内聚。 一个类,应该只有一个引起它变化的原因,也就是...

gackey
今天
4
0
C++ 锁

C++提供了两种常用的锁,std::lock_guard<Lockable &T>和std::unique_lock<Lockable &T>。通常使用场景下,这两个锁用法一致。即,在构造锁对象时上锁,在析构锁对象时解锁。使用户从上锁/解...

yepanl
今天
4
0
Kali Linux Docker 練習

docker pull kalilinux/kali-linux-docker docker run -t -i kalilinux/kali-linux-docker /bin/bash apt-get update apt-get install htop apt-get install nmap apt-get install wpscan ap......

BaiyuanLab
今天
4
0
通俗大白话来理解TCP协议的三次握手和四次分手

最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就...

onedotdot
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部