Python Web开发:发送邮件
来自CloudWiki
前情回顾
招聘人员通过后台管理系统浏览简历信息,在进行状态更改的时候触动触发器打印变量status的值。
思考:能不能更进一步 ?在招聘人员进行状态更改的时候自动发送初试结果至应聘者邮箱呢 ?
实训步骤
邮箱设置
win10系统下网易邮箱怎样设置SMTP服务:http://www.xitongcheng.com/jiaocheng/win10_article_30498.html
以qq邮箱为例,单击顶部”设置“按钮,然后在邮箱设置中单击”账户“进入账户信息
然后向下滚动找到”开启服务“面板,选择开启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])
效果图
当招聘人员保存审批结果时,系统自动给当事人发送邮件: