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

济南小老虎 / 2023-05-14 / 原文

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 = 'zhaobsh@inspur.com'  #收件人
mail.CC = 'zhaobsh@inspur.com'  # 抄送人
mail.Bcc ='zhaobsh@inspur.com' #密抄收件人
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的计划下一节进行学习.