首页 > 系统相关 >Python学习之八_调用Outlook发送邮件以及调用远程windows上面的python

Python学习之八_调用Outlook发送邮件以及调用远程windows上面的python

时间:2023-05-14 15:55:29浏览次数:41  
标签:Outlook 调用 Python winrm python mail id 邮件

Python学习之八_调用Outlook发送邮件以及调用远程windows上面的python


摘要

之前只有一个需求是发送加密邮件.
之前一直是使用linux进行发送.但是总是无法发送加密邮件. 
最近学习python, 发现可以使用 python来调用outlook来发送邮件.
这样就比较简单了. 
可以直接使用outlook的加密处理. 
但是我们这边只有windows的outlook客户端. linux发送的话还稍微复杂一点. 
这里准备总结一下循序渐进的处理

邮件发送与准备

需要安装一个模块 pywin32
注意很多模块名安装与代码里面是不一样的. 

安装好pywin32之后就可以进行部分参数的设置. 
注意这里学习自:
https://blog.csdn.net/qq_42692386/article/details/118226919

编写简单代码

# coding=utf-8
import win32com.client as win32

outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = '[email protected]'  #收件人
mail.CC = '[email protected]'  # 抄送人
mail.Bcc ='[email protected]' #密抄收件人
mail.Subject = '测试python'  #邮件主题
mail.Body = '这是一封测试邮件'  #邮件正文
mail.Importance = 2  #设置重要性为高
mail.Attachments.Add(r'F:\dbcomparetools\sudbcomparetools\sudbcompare使用说明.pdf')  #添加附件
mail.Send()   #发送

Python调用其他Windows机器执行命令-环境设置

第一步需要打开被调用机器的wsman进行服务使用
学习的网页为:
https://blog.csdn.net/Together_CZ/article/details/86623977#comments_12356187
主要步骤是
被调用的机器 使用管理员打开 powershell
然后执行命令
注意:需要在被控机上开启以下服务:

#针对winrm service 进行基础配置:
    winrm quickconfig
#查看winrm service listener:
    winrm e winrm/config/listener
#为winrm service 配置auth:
    winrm set winrm/config/service/auth '@{Basic="true"}'
#为winrm service 配置加密方式为允许非加密:
    winrm set winrm/config/service '@{AllowUnencrypted="true"}'
    winrm set winrm/config/Client '@{AllowUnencrypted="true"}'

安装必备的组件以及执行源端机器的python脚本

pip install pywinrm
可以在pycharm里面进行安装. 

在其他机器执行命令如下:
# coding=utf-8
from winrm.protocol import Protocol

p = Protocol(
    endpoint='http://10.110.xxx.xxxx:5985/wsman',
    transport='ntlm',
    username=r'administrator',
    password='Mypassword',
    server_cert_validation='ignore')
shell_id = p.open_shell()
command_id = p.run_command(shell_id, b'python D:/pythonProjects/zhaobsh.py', ['/all'])
std_out, std_err, status_code = p.get_command_output(shell_id, command_id)
p.cleanup_command(shell_id, command_id)
print(std_out, status_code)
p.close_shell(shell_id)

调用cmd的计划下一节进行学习.

标签:Outlook,调用,Python,winrm,python,mail,id,邮件
From: https://www.cnblogs.com/jinanxiaolaohu/p/17399427.html

相关文章

  • python安全攻防学习笔记一 语言基础篇
    1.列表python中创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如:l1=["你好",0,1,2,3,4,5,6,7,8,9,0]l2=["嘟嘟嘟嘟嘟","雪球来了"]列表中的数据可以进行增删改查,方法有:dell1[1]#删除指定的数据l1.append("我不好")#在末尾添加数据......
  • Python组合数据类型
    本文转自:https://www.cnblogs.com/skynet/archive/2013/05/06/3063245.html一、  String:字符串放在单引号、双引号、三引号(多行时)中,从0开始索引,支持n  查:find、index、n  切片: s[0:2]、s[1:]n  连接:“abc”+“ef”=>“abcdef”、joinn  分割:splitn  格式化: ......
  • 如何使用Python实现二分查找算法
    二分查找算法是一种常用的搜索算法,其时间复杂度为O(logn),可以快速地从有序数组中找出目标元素。在本篇文章中,我们将学习如何使用Python实现二分查找算法。二分查找算法的原理很简单:首先确定数组的中间位置,然后将目标元素与中间元素进行比较。如果目标元素小于中间元素,则在数组的左......
  • Python学习之七_input和print
    Python学习之七_input和print摘要python3之后函数必须带()了因为我开始学习的比较晚,所以准备Python3开始学起前面主要是模仿别人的代码进行学习后续慢慢学习使用python调用ebpf等内容.这里简单先总结一下input和print的函数.作为一个学习总结print和inputprint......
  • python常用的模块值时间模块-time
    一、在python中,通常有以下几种方式来表达时间1、时间戳,比如1684036783.6709572、格式化字符串,比如2023-05-05/14/2311:58:363、元组,比如time.struct_time(tm_year=2023,tm_mon=5,tm_mday=14,tm_hour=11,tm_min=59,tm_sec=43,tm_wday=6,tm_yday=134,tm_isdst=0) 二......
  • 常见问题解决 --- python必备技能 换源
    源是什么源是编程开发或则是操作系统要使用的第三方依赖软件应用市场,源又从何而来,其实源来自其他的源的克隆,或者是源提供者自己收集,编译,又或者作者的上传为什么要换源这些源往往都在国外,国内以为你懂的原因无法直接访问或者特别慢怎么换Windows下python永久换源方式有两种:修......
  • 《asyncio 系列》13. 在 asyncio 中调用命令行程序
    楔子Python编写的应用程序需要Python运行环境,然而,并不是所有我们想要交互的组件都是用Python编写的。我们可能已经使用了一个用C++、Go、Rust或其他语言编写的应用程序,这些语言提供了更好的运行时特征,或者可以提供很优秀的实现方式,而无需我们重新实现。可能还希望使用操......
  • 供应链库存管理策略(s,S)——Python仿真
    供应链物流是货品的供应商采购、仓库存储、仓间库存调拨、履约送货等一系列货品流转到用户的过程,其中各个环节会涉及到成本、时效等优化。供应链智能补货项目是货品从供应商采购货品的环节,主要考虑的是货品的缺货成本和持货成本平衡的问题,两者常用的考量分别是周转和缺货率。当库......
  • pta python实验3-6
    python实验4循环结构 1importmath23defestimate_pi(n):4total=05ret=06foriinrange(n+1):7ifi%2==0:8sign=19else:10sign=-111term=sign/((2*i+1)*mat......
  • Python学习之六_同时访问Oracle和Mysql的方法
    Python学习之六_同时访问Oracle和Mysql的方法背景jaydebeapi可以访问大部分数据库.但是他有一个问题是仅能够访问一种类型的数据库.如果同事连接两种数据库,那么就会出现问题会有如下的提示:TypeError:Classcom.mysql.cj.jdbc.Driverisnotfound网上有方法是修改j......