Python Web开发:发送邮件

来自CloudWiki
跳转至: 导航搜索

前情回顾

Python Web开发:信号触发器

招聘人员通过后台管理系统浏览简历信息,在进行状态更改的时候触动触发器打印变量status的值。

思考:能不能更进一步 ?在招聘人员进行状态更改的时候自动发送初试结果至应聘者邮箱呢 ?

实训步骤

邮箱设置

win10系统下网易邮箱怎样设置SMTP服务:http://www.xitongcheng.com/jiaocheng/win10_article_30498.html

以qq邮箱为例,单击顶部”设置“按钮,然后在邮箱设置中单击”账户“进入账户信息

Python21051005.png

然后向下滚动找到”开启服务“面板,选择开启POP/SMTP服务

Django设置

Django框架中自带了邮箱模块,只需简单配置即可使用

打开settings.py:

# 邮箱设置
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'xxxxxxxx@qq.com'      # QQ 账号
EMAIL_HOST_PASSWORD = 'xxxxxxxx'         # 授权码
EMAIL_USE_TLS = True

设置信号触发器

models.py:

@receiver(post_init, sender=Resume)
def before_save_resume(sender, instance, **kwargs):
    instance.__original_status = instance.status


@receiver(post_save, sender=Resume)
def post_save_resume(sender, instance, **kwargs):
    email = instance.email  # 应聘者邮箱
    EMAIL_FROM = '458976849@qq.com'  # 企业QQ邮箱

    if instance.__original_status == 1 and instance.status == 2:
        email_title = '通知:云计算科技与艺术协会纳新初试结果'
        email_body = '恭喜您通过本社团初试'
        send_status = send_mail(email_title, email_body, EMAIL_FROM, [email])



    elif instance.__original_status == 1 and instance.status == 3:
        email_title = '通知:云计算科技与艺术协会纳新初试结果'
        email_body = '很遗憾,您未能通过本社团初试,感谢您的关注'
        send_status = send_mail(email_title, email_body, EMAIL_FROM, [email])

效果图

Python21052804.png

当招聘人员保存审批结果时,系统自动给当事人发送邮件:

Python21052901.png