zoukankan      html  css  js  c++  java
  • python发送 IBM lotus Notes 邮件

    如何使用python发送IBM Notes邮件?如果这样搜索,很容易可以搜索一大堆关于使用win32抄来抄去的代码和文章,当然,也能用。我想实现一种接口方式的代码,管理员可以发送任何ID(发件人)的邮件。
    结论:在Windows客户端上可以实现单用户发送邮件,但未能实现任意用户发送邮件
     
    一开始我设计的程序是将邮件相关内容发送到数据库,定时程序自动在数据库中获取要发送的邮件,制作成接口的形式,支持任意用户发送邮件。
    但很快发现问题,我们在网上搜索得到的win32的python代码,并不能支持更换用户ID。
    在IBM的官网上,没找到查到相关接口文档,但在HCL software官网上有Lotus script 语言的相关接口文档。(虽然我不知道这个网站是用来做什么的)
    (链接:https://help.hcltechsw.com/dom_designer/10.0.1/basic/H_NOTESSESSION_CLASS.html)
    我们可以看到,NotesSession对象有一个CreateRegistration函数,可以创建NotesRegistration对象,而NotesRegistration对象有一个函数,名为SwitchToID,一开始看到这里,我以为有希望了,但是,经过尝试之后,发现会报错,创建不了NotesRegistration对象。
    或许在Lotus Script中的函数名和使用pywin32的不一样?为了验证这个想法,就需要搞懂win32的原理,我记得这个是可以在网上找到相关文档的,英文的,我也看的一知半解。
    但只要在代码中加多一句 
    from win32com client import makepy
    makepy.GenerateFromTypeLibSpec("Lotus Domino Objects")
    就可以利用makepy看到相关接口文件
    当我们创建session的时候,session = DispatchEx("Notes.NotesSession"),实际上是在读取注册表的Notes.NotesSession,打开注册表编辑器,计算机--HKEY_CLASSES_ROOT,往下找找,就能找到关于Notes.NotesSession的值,添加上面makepy之后,就可以在C盘自己用户名下文件夹AppData/Local/Temp里面找到gen_py的文件夹,里面有跟Notes.NotesSession值一样命名的py文件,我们就可以看到相关Notes.NotesSession对象或者其他Notes对象的接口函数了。
    可以看到NotesSession对象的确有一个CreateRegistration函数,可以创建NotesRegistration对象。
     
    但是!还是不成功,会报错说NotesSession没有相关属性。其实也能理解,毕竟我只是安装了一个Notes客户端,接口能支持到什么程度也只有官方能解释。我猜想,如果能在Notes管理服务器上创建接口,说不定就可以任意发送了,但我不是管理员,也就只能这样了。
    就像想要隐藏发件人或者伪造发件人,用win32就不能实现,因为如果轻易可以伪造,那安全性就很低了。
  • 相关阅读:
    骚猪队的模板
    cs231n 作业2 心路历程
    cs231n 作业1 心路历程
    视觉语言导航综述Visual Language Navigation
    论文阅读DSAE,不知道VAE能不能玩的下去
    icpc 2019 word final A题 思路
    VAE 变分自动编码器入门
    luogu4827 梦美的线段树
    EOJ Monthly 2019.2 存代码
    国王游戏,高精度完全模板
  • 原文地址:https://www.cnblogs.com/sunshinesky/p/14951052.html
Copyright © 2011-2022 走看看