博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
smtp outlook邮件发送非授权码模式
阅读量:4971 次
发布时间:2019-06-12

本文共 3793 字,大约阅读时间需要 12 分钟。

1.起因:send fail SMTP AUTH extension not supported by server. 使用端口25 和587均失效出现此问题

首先前往outlook修改设置pop和IMAP开启,允许第三方调用:https://outlook.live.com/owa/?path=/options/popandimap

【在使用QQ邮箱IOS端的APP添加outlook邮箱时,显示IMAP没有开启】是否意指当您在iOS手机设备中进行配置微软帐户至第三方域名邮箱(QQ邮箱)时,

系统提示Outlook邮箱中的IMAP并未开启?

  1. 请您前往网页版Outlook邮箱的【】;
  2. 接着,请您在【POP选项】选择【是】;
  3. 在【使用POP的设备和应用可以设置为删除重Outlook下载的邮件】中,我们建议您点选【不允许设备和应用删除来自Outlook的邮件。它会将邮件移动到特殊的POP文件夹】,这是为了防止您的邮件丢失的情况;
  4. 请完成以上步骤后,单击【保存】即可。

 

查询原因:版本使用python3.7,官网做出如下变动:server_hostname cannot be an empty string or start with a leading dot.

也就是说现在对于3.7需要对非ssl模式传入smtp server对象传入str模式的host地址再进行server对象创建连接

或者:

 

 

 

在github有人曾给出如下修复针对ssl,非ssl

https://github.com/tp4a/teleport/commit/dea9c48d825e7bac5bbc41006bc993713e4b516f

尝试修复:服务器不支持SMTP AUTH扩展。

 

 最终及解决代码如下:

#!/usr/bin/python3import osimport smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.header import Headerfrom email.mime.image import MIMEImagedef main():    sender='chen1054@outlook.com'    receiverList=['chen1054@outlook.com']    user='chen1054@outlook.com'    emailPwd='youroutlookpwd'#用户邮箱密码无需开通授权码    smtpServer=r'smtp-mail.outlook.com'    commonPort=587 # 25也有效    emailTitle='Hello,World!'    htmlPath=r'F:/eclipse/readme/readme_eclipse.html'    attachPathList=[r'C:\Users\Administrator\PycharmProjects\Supro\src\logs\Info\20190330.log',r'C:\Users\Administrator\PycharmProjects\Supro\src\logs\Info\testpc.png']    emailChanel(sender,receiverList,user,emailPwd,smtpServer,commonPort,emailTitle,htmlPath,attachPathList)def emailChanel(sender,receiverList,user,emailPwd,smtpServer,commonPort,emailTitle,htmlPath=None,attachPathList=None):    multiPart=MIMEMultipart()    multiPart['From']=sender    multiPart['To']=','.join(receiverList)    subject=emailTitle    multiPart['Subject']=Header(subject,"utf-8")    if os.path.isfile(htmlPath):        if os.path.exists(htmlPath):            pass        else:            raise IOError("htmlPath not exist")    else:        raise IOError("html path is not file..")    emailBody=MIMEText(_text=open(htmlPath,'rb').read(),_subtype='html',_charset="utf-8")    multiPart.attach(emailBody)    if isinstance(attachPathList,list):            for attachPath in attachPathList:                if os.path.exists(attachPath):                    pass                else:                    raise  IOError("attachPath not exist")    else:        raise TypeError("expected type is list,but get {}".format(type(attachPathList).__name__))    for attachPath in attachPathList:        if os.path.splitext(attachPath)[-1]==".log":            attach=MIMEText(open(attachPath, 'rb').read(), 'base64', 'utf-8')            attach["Content-Type"] = 'application/octet-stream'            attach["Content-Disposition"] = 'attachment; filename="dailyLog.log"' # filename not strict            multiPart.attach(attach)        if os.path.splitext(attachPath)[-1]==".png":            fp = open(attachPath, 'rb')            msgImage = MIMEImage(fp.read(),_subtype='octet-stream')            fp.close()            msgImage.add_header('Content-Disposition', 'attachment', filename="attach.png")            multiPart.attach(msgImage)    # https://github.com/tp4a/teleport/commit/dea9c48d825e7bac5bbc41006bc993713e4b516f    smtp=smtplib.SMTP("{}:{}".format(smtpServer,commonPort))    try:        smtp.ehlo()        smtp.starttls()        smtp.login(user,emailPwd)        smtp.sendmail(sender,receiverList,multiPart.as_string())    except smtplib.SMTPException as e:        print("send fail",e)    else:        print("success")    finally:        try:            smtp.quit()        except smtplib.SMTPException:            print("quit fail")        else:            print("quit success")if __name__ == '__main__':    main()

  

 

转载于:https://www.cnblogs.com/SunshineKimi/p/10629368.html

你可能感兴趣的文章
MonkeyRecorder
查看>>
Maven概述
查看>>
上周热点回顾(8.18-8.24)
查看>>
Feature toggle
查看>>
day02
查看>>
我是怎么招聘程序员的
查看>>
gvim 配置Pydiction
查看>>
Linux安装指定mysql版本
查看>>
Exception in thread "main" java.lang.ClassNotFoundException: 解决方法
查看>>
移动应用(手机应用)开发IM聊天程序解决方案
查看>>
[转载] K3漏油器全紫铜替换原硅胶垫教程。标准姿势
查看>>
python set
查看>>
VC中使用ADO操作数据库的方法
查看>>
如何判断域名是否被微信拦截 被已经被微信封了的的域名网址如何在微信中正常打开...
查看>>
分布式锁的三种实现方式
查看>>
AJAX原生JS代码
查看>>
ThinkPHP提示错误
查看>>
poj 2109 pow函数也能这么用?p的开n次方
查看>>
Oracle database link
查看>>
清北学堂2017NOIP冬令营入学测试P4749 F’s problem(f)
查看>>