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中处理字符串之endswith()方法的使用简介
May 18 Python
浅谈插入排序算法在Python程序中的实现及简单改进
May 04 Python
django基础之数据库操作方法(详解)
May 24 Python
Python实现的生产者、消费者问题完整实例
May 30 Python
python-opencv颜色提取分割方法
Dec 08 Python
计算机二级python学习教程(1) 教大家如何学习python
May 16 Python
python面试题Python2.x和Python3.x的区别
May 28 Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 Python
Django继承自带user表并重写的例子
Nov 18 Python
python创建学生管理系统
Nov 22 Python
tensorflow指定GPU与动态分配GPU memory设置
Feb 03 Python
pytorch数据预处理错误的解决
Feb 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
社区(php&amp;&amp;mysql)六
2006/10/09 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
Bootstrap栅格系统学习笔记
2016/11/25 Javascript
Web 开发中Ajax的Session 超时处理方法
2017/01/19 Javascript
bootstrap组件之导航组件使用方法
2017/01/19 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
Python连接DB2数据库
2016/08/27 Python
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
Python3实现的字典遍历操作详解
2018/04/18 Python
详解python中的装饰器
2018/07/10 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
django框架自定义用户表操作示例
2018/08/07 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
python爬虫可以爬什么
2020/06/16 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
python3判断IP地址的方法
2021/03/04 Python
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
Java语言的优势
2015/01/10 面试题
终端业务员岗位职责
2013/11/27 职场文书
七年级生物教学反思
2014/01/30 职场文书
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
公务员政审材料
2014/12/23 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
golang的文件创建及读写操作
2022/04/14 Golang