Python 写了个脚本实现定时发送统计报告, 生产环境中遇到的问题是发出的邮件被公司邮箱服务器识别为外部邮件从而带上警告标识. 如图:

CAUTION: This email originated from outside the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.


实现的代码大致如下, 端口用的 587:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header
'''发送Excel到指定邮箱
'''
def sendEmail():global summaryFilePathglobal todaymessage = MIMEMultipart()message['From'] = Header("eflow", 'utf-8')message['To'] =  Header(EMAIL_RECEIVERS, 'utf-8')subject = '费用归口汇总表_{date}'.format(date=today)message['Subject'] = Header(subject, 'utf-8')message.attach(MIMEText('附件是{subject}, 请查收'.format(subject=subject), 'plain', 'utf-8'))att = MIMEApplication(open('./{path}'.format(path=summaryFilePath), 'rb').read())att.add_header('Content-Disposition', 'attachment', filename = summaryFilePath)message.attach(att)try:smtpObj = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)smtpObj.starttls()smtpObj.login(EMAIL_SENDER, EMAIL_PWD)smtpObj.sendmail(EMAIL_SENDER, EMAIL_RECEIVERS.split(';'), message.as_string())logger.info("邮件发送成功")except smtplib.SMTPException as e:logger.error(e)

用的是从网上拷的代码, 发现有识别问题后又搜了很久没找到另外的版本, 习惯的拿来主义不管用了. 没办法, 最后在官方找到了合适的方案.

参考: https://docs.python.org/3/library/email.examples.html#email-examples

修改后的代码如下:

def sendEmail():global summaryFilePathglobal todaysubject = '费用归口汇总表_{date}'.format(date=today)try:msg = EmailMessage()msg.set_content('附件是{subject}, 请查收'.format(subject=subject))msg['Subject'] = subjectmsg['From'] = EMAIL_SENDERmsg['To'] = EMAIL_RECEIVERS.split(';')msg['Bcc'] = BCC_EMAIL_RECEIVERS.split(';')with open(summaryFilePath, 'rb') as content_file:content = content_file.read()msg.add_attachment(content, maintype='application', subtype='excel', filename=summaryFilePath)smtpObj = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)smtpObj.ehlo(SMTP_SERVER)smtpObj.starttls()smtpObj.login(EMAIL_SENDER, EMAIL_PWD)smtpObj.send_message(msg)smtpObj.quit()logger.info("邮件发送成功")except smtplib.SMTPException as e:logger.error(e)

完美解决问题.
最后吐槽一下, 网上的代码抄来抄去并且有时效性问题, 以后还是尽量看官方的文档优先吧.

Python 使用企业邮箱发邮件被识别为外部邮箱的问题及解决方案相关推荐

  1. linux 给邮箱发邮件,使用linux系统给邮箱发邮件

    配置文件如下: [root@localhost ~]# vim /etc/mail.rc set from=zebra9301@163.com smtp=smtp.163.com set smtp-a ...

  2. php如何调用163邮箱发邮件,ThinkPHP3.2利用QQ邮箱/163邮箱通过PHPMailer发送邮件的方法...

    前言 我之前一直使用163邮箱发送需要处理的文件,但是如果操作过于频繁[或者有别的问题],会导致发送失败,相反现在用QQ的貌似还没出现过类似情况,不过QQ邮箱配置和163有一丢丢不一样,我还是贴一下, ...

  3. python使用qq邮箱发邮件

    发现QQ邮箱是个变态的东西...普通网上的教程根本无法搞定这个问题 于是写了这个,用于帮助大家使用python发邮件遇到的问题 第一步: 开启QQ第三方登录,参考文章 https://jingyan. ...

  4. 【Python用QQ邮箱发邮件】

    学习目标:Python用QQ邮箱发邮件 学习内容: 1:到入库 import smtplib from email.message import EmailMessage from datetime ...

  5. python用outlook自动发邮件_python使用两种发邮件的方式smtp和outlook示例

    smtp是直接调用163邮箱的smtp服务器,需要在163邮箱中设置一下.outlook发送就是Python直接调用win32方式.调用程序outlook直接发送邮件. import win32com ...

  6. 【电子邮件提醒】用python写个能发邮件的脚本

    [电子邮件提醒]用python写个能发邮件的脚本 文章目录 [电子邮件提醒]用python写个能发邮件的脚本 邮箱使用 使用python发邮件 封装一个发邮件的类 发邮件类 使用说明 前言 : 使用p ...

  7. 往国外发邮件,你知道什么邮箱比较正式吗?

    如今随着我们国家的改革开放,我们国家的经济实力和综合国力也已经发生了巨大的改变,从而使我们进入了一个新的时代,而随着时代而来的那就是那些抓住风口下海经商的第一代商人们,在新时代开始的时候,第一波进去的 ...

  8. Postfix配置QQ邮箱发邮件

    配置QQ邮箱发邮件 1.这里使用了QQ邮箱的SMTP,需要做以下配置 2.qq邮箱通过生成授权码来设置密码  3.关闭服务器的sendmail服务,开启postfix服务 4.创建证书文件  root ...

  9. 利用jmail qq邮箱发邮件 报错 解决方法

    利用java的jmail,登录qq邮箱发邮件时遇到下面几个问题,分享一下解决方法. 1. qq需要使用ssl  解决方法:使用有ssl安全认证的代码 <span style="font ...

  10. 163VIP邮箱发邮件,163VIP邮箱年费多少,163邮箱手机端在哪?

    163VIP邮箱发邮件,163VIP邮箱年费多少,163邮箱手机端在哪,关于163邮箱的相关小常识,今天给大家做一个全面分享吧! 关于163VIP邮箱年费 首先,如果你是长期使用可以一次性多续几年,这 ...

最新文章

  1. 综述|工业金属平面材料表面缺陷自动视觉检测的研究进展
  2. 【puthon】把大量csv文件写入h5文件制作数据集
  3. 安卓9去掉搜索栏_安卓福音,史上最强搞机工具箱,一键修手机
  4. 【Hadoop】MAC下hadoop2.6安装以及执行wordcount
  5. Scala基础教程(三):访问修饰符、运算符
  6. Qt窗口部件与布局之二:布局管理
  7. 遍历boost::fibers::unbuffered_channel< unsigned int >的测试程序
  8. 如何查询SAP Cloud for Customer系统升级和维护时间
  9. 热水器多长时间清理一次比较好?该怎么清理?
  10. Vim快捷键-键位图
  11. 锐浪报表 Grid++Report 模板文件的读取
  12. 机动车尾气污染物分析仪的原理
  13. 利用SuperMap的水文分析提取山脊线和山谷线
  14. 基于最大最小思想优化拉丁超立方采样
  15. 对于搞钱我们是认真的
  16. 粒子滤波 机器学习_用机器学习研究粒子物理学中的开放性问题
  17. 用MFC画一个美国队长的盾牌
  18. 电脑端如何访问手机SD卡中的文件
  19. react+antd解决报错:Module not found: Can't resolve 'antd/es/affix'
  20. MySQL 中查询统计数量

热门文章

  1. MT4开发 之开发自己的数据源系统(dde UniversalDDEConnector )
  2. 教育培训行业的SOP
  3. 计算机自动开机什么愿意,电脑自动开关机是什么原因 怎么解决呢
  4. 数据库原理和应用(8)—— 数据类型
  5. 微软云存储更换品牌 免费空间将翻番达到15GB
  6. Unity3d之AR小游戏
  7. 金邦达:做最值得客户尊重的IC卡项目服务商
  8. OPC DA 到 OPC UA
  9. python课后作业之三科成绩总和、平均分+体脂率计算
  10. 鸿蒙之主的武器,各职业武器使用介绍 各职业一般用什么武器