封装web.py发送邮件
博客专区 > famiover 的博客 > 博客详情
封装web.py发送邮件
famiover 发表于1年前
封装web.py发送邮件
  • 发表于 1年前
  • 阅读 45
  • 收藏 0
  • 点赞 1
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

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

标签: web.py
共有 人打赏支持
粉丝 4
博文 72
码字总数 16438
×
famiover
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: