python基于exchange函数发送邮件过程详解


Posted in Python onNovember 06, 2020

1.Python hasattr() 函数

描述

hasattr() 函数用于判断对象是否包含对应的属性。

语法

hasattr 语法:

hasattr(object, name)

参数

  • object -- 对象。
  • name -- 字符串,属性名。

返回值

如果对象有该属性返回 True,否则返回 False。

实例

以下实例展示了 hasattr 的使用方法:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
class Coordinate:
x = 10

y = -5

z = 0
point1 = Coordinate()
print(hasattr(point1, 'x'))
print(hasattr(point1, 'y'))
print(hasattr(point1, 'z'))
print(hasattr(point1, 'no')) # 没有该属性

输出结果:

True

True

True

False

打包.ui文件:

C:\Python27\Lib\site-packages\PyQt4>pyuic4 E:\pyDemo\proTools.ui -o proTools.py

Qt 代码是面向对象的,并且简单易学。所有我们添加的组件都是一个对象,并且都拥有自己的方法比如toPlainText()(用来读取输入框中的值)。这让它使用起来非常方便。

代码打包:C:\Python27\Scripts>python pyinstaller-script.py -w E:\pyDemo\PyQt\testPyQt.py testPyQt.spec

-F 带黑窗口 (打包成单个exe)

-W 不带黑窗口(打包成文件形式)

-i 加图标

pyinstaller -i D:\ALIX_SH\2carReport\yx.ico -W D:\ALIX_SH\2carReport\upload2carReport.py

-F -w 打包成exe,但不带黑窗口

pyinstaller -i D:\ALIX_SH\2carReport\yx.ico -F -w D:\ALIX_SH\2carReport\upload2carReport.py

下面用Pyinstaller生成一个可执行文件试试。

在命令提示符中去到要打包的目录;直接输入"pyinstaller -F -w 文件名.py(F大写);文件目录出现新的文件夹,里面就是打包好的exe文件了;

  • -F, -onefile:打包成一个exe文件
  • -w, -windowed:使用窗口,无控制台
  • -c, -console:无窗口,使用控制台
  • -D, -onedir:创建一个目录,包含exe文件,但会依赖其他文件
  • --icon=图标路径

可以通过"Pyinstaller -h"来查看

Python发邮件的代码如下:

只需要填写好加粗字体,即可正常使用。

from exchangelib import DELEGATE, Account, Credentials, Message, Mailbox, HTMLBody

def Email(to, subject, body):
  creds = Credentials(
    username='xxxxxx',
    password='xxxxxx'
  )
  account = Account(
    primary_smtp_address='xxx@xxx.com',
    credentials=creds,
    autodiscover=True,
    access_type=DELEGATE
  )
  m = Message(
    account=account,
    subject=subject,
    body=HTMLBody(body),
    to_recipients = [Mailbox(email_address=to)]
  )
  m.send()

Email("xxx@xxx.com", "abc", "def")

但是如果Python环境安装有瑕疵,则报错如下:

$python3 ab.py
Traceback (most recent call last):
 File "ab.py", line 22, in <module>
  Email("xxx@xxx.com", "abc", "def")
 File "ab.py", line 12, in Email
  access_type=DELEGATE
 File "/usr/local/lib/python3.5/site-packages/exchangelib/account.py", line 66, in __init__
  credentials=credentials)
 File "/usr/local/lib/python3.5/site-packages/exchangelib/autodiscover.py", line 214, in discover
  email=email)
 File "/usr/local/lib/python3.5/site-packages/exchangelib/autodiscover.py", line 236, in _try_autodiscover
  return _try_autodiscover(e.server, credentials, email)
 File "/usr/local/lib/python3.5/site-packages/exchangelib/autodiscover.py", line 262, in _try_autodiscover
  raise_from(AutoDiscoverFailed('All steps in the autodiscover protocol failed'), None)
 File "/usr/local/lib/python3.5/site-packages/future/utils/__init__.py", line 398, in raise_from
  exec(execstr, myglobals, mylocals)
 File "<string>", line 1, in <module>
exchangelib.errors.AutoDiscoverFailed: All steps in the autodiscover protocol failed

好在我有台机器安装Python3.5.2正常,执行上述完全没有问题。

今天终于搞定!!! 2017-12-11

exchange的版本不对,

我本机版本:

pip3 search exchangelib
exchangelib (1.10.6) - Client for Microsoft Exchange Web Services (EWS)
INSTALLED: 1.9.4
LATEST: 1.10.6

服务器版本为:

$pip3 search exchangelib
exchangelib (1.10.6) - Client for Microsoft Exchange Web Services (EWS)
INSTALLED: 1.10.4
LATEST: 1.10.6

要做的就是把服务器上的版本降低到1.9.4,就?了。

pip3 install exchangelib==1.9.4

再次执行发邮件的操作,bingo,搞定!

python基于exchange函数发送邮件过程详解

1、首先下载一个神器exchangelib,操作 pip install exchangelib

2、然后只需要将下面的信息改成你的信息就可以了

from exchangelib import Account, Message, Mailbox, HTMLBody, ServiceAccount
#忽略警告
import urllib3
urllib3.disable_warnings()

#报错处理:ConnectionError: HTTPConnectionPool(host='mail.xxx.com', port=443): Max retries exceeded with url: 
# import socket
# socket.create_connection((host, port), timeout=10)

def Email(to, subject, body):
 creds = ServiceAccount(username='域\名', password='密码')
 account = Account('发送的邮箱', credentials=creds, autodiscover=True)
 m = Message(account=account,subject=subject,body=HTMLBody(body),
to_recipients = [Mailbox(email_address=to)]
 )
 m.send()

Email("接收的邮箱", "邮件标题", "邮件内容")

安装库exchangelib

pip install exchangelib1

脚本内容

# coding=utf-8
#
# Created on 2018/2/


from exchangelib import DELEGATE, Account, Credentials, Configuration, NTLM, Message, Mailbox, HTMLBody
from exchangelib.protocol import BaseProtocol, NoVerifyHTTPAdapter


#此句用来消除ssl证书错误,exchange使用自签证书需加上
BaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdapter


# 输入你的域账号如example\leo
cred = Credentials(r'EXAMPLE\leo', '输入你的密码')

config = Configuration(server='输入邮箱服务器网页地址', credentials=cred, auth_type=NTLM)
a = Account(
primary_smtp_address='输入你要绑定的邮箱名(leo@example.com)', config=config, autodiscover=False, access_type=DELEGATE
)

# 此处为用来发送html格式邮件的文件路径
with open(r'C:\Users\leo\Desktop\1.html') as f:
msg = f.read().decode('utf-8')

m = Message(
account=a,
folder=a.sent,
subject=u'测试邮件',
body=HTMLBody(msg),
to_recipients=[Mailbox(email_address='输入你要绑定的邮箱名(leo@example.com)')]
)
m.send_and_save()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现从web抓取文档的方法
Sep 26 Python
跟老齐学Python之print详解
Sep 28 Python
Python中列表和元组的使用方法和区别详解
Dec 30 Python
python爬虫实战之爬取京东商城实例教程
Apr 24 Python
Python 查找字符在字符串中的位置实例
May 02 Python
Python用for循环实现九九乘法表
May 31 Python
python存储16bit和32bit图像的实例
Dec 05 Python
Python中的heapq模块源码详析
Jan 08 Python
利用python实现短信和电话提醒功能的例子
Aug 08 Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 Python
python中把元组转换为namedtuple方法
Dec 09 Python
python数据可视化使用pyfinance分析证券收益示例详解
Nov 20 Python
Python Unittest原理及基本使用方法
Nov 06 #Python
python中的yield from语法快速学习
Nov 06 #Python
Python通过字典映射函数实现switch
Nov 06 #Python
Python使用grequests并发发送请求的示例
Nov 05 #Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 05 #Python
Python中常用的os操作汇总
Nov 05 #Python
Python Web项目Cherrypy使用方法镜像
Nov 05 #Python
You might like
一个简单的MySQL数据浏览器
2006/10/09 PHP
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
php 定界符格式引起的错误
2011/05/24 PHP
php实现用户在线时间统计详解
2011/10/08 PHP
php mysql 判断update之后是否更新了的方法
2012/01/10 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
jQuery自定义图片上传插件实例代码
2017/04/04 jQuery
解决vue router组件状态刷新消失的问题
2018/08/01 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
详解Python中的各种函数的使用
2015/05/24 Python
详解Python import方法引入模块的实例
2017/08/02 Python
Django视图和URL配置详解
2018/01/31 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
Python 合并拼接字符串的方法
2020/07/28 Python
pandas实现导出数据的四种方式
2020/12/13 Python
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
美国糖果店:Sugarfina
2019/02/21 全球购物
文员的职业生涯规划发展方向
2014/02/08 职场文书
教师产假请假条范文
2014/04/10 职场文书
村班子对照检查材料
2014/08/18 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
时尚女魔头观后感
2015/06/04 职场文书
创业计划书之香辣虾火锅
2019/09/23 职场文书
Python OpenCV实现图像模板匹配详解
2022/04/07 Python
Pandas 数据编码的十种方法
2022/04/20 Python