Skip to main content

Winmail API

Project description

Winmail

介绍

Winmail Server 工具类

接口版本: 1.1、1.2

【建议使用】Winmail OpenAPI接口。 【不建议使用】获取Winmail信息和COM接口,Python需运行在Winmail所在机器。

安装

pip install winmail

更新历史

2023.11.20

  • 删除包里多余文件

2023.11.17

  • 版本号使用日期,更改到2023.11.17。
  • 增加OpenApi1.2接口。

使用说明

服务启停

from winmail import start_winmail_service, stop_winmail_service

start_winmail_service()
stop_winmail_service()

OpenApi12说明

接口按官方OpenApi1.2版本完成,提供基础的参数提示,方便使用。方法名使用Winmail接口中的方法名命名,有点分隔符的替换为下划线。比如方法domain.added -> domain_added。

from winmail import OpenApi12

api = OpenApi12('localhost', 6080, 'bt6aWe18d5b', 'btt387e78f6871aea2016aR3916eb65e299b7affHb')

login_result = api.login('admin', 'adminpassword', manage_path='admin')
print(login_result)
result = api.user_edited(name='usera', password='newpassword',  domain='test.com', changedpwd=1, authtype=0, status=0)
print(result)

1.2版本接口中未包含的可以参考以下调用OpenApi通用类。

OpenApi说明

可以使用HTTP、HTTPS请求,不检查证书。具体OpenApi的接口完整手册请查看Winmail官方文档。

from winmail import OpenApi as WinmailApi

server = '192.168.1.195'
port = 6080
apikey = 'bt6aWe18d5b'
apisecret = 'btt387e78f6871aea2016aR3916eb65e299b7affHb'

# 管理员接口示例
manage_path = 'admin'
user = 'admin'
pwd = 'adminpassword'    
api = WinmailApi(server, port, apikey, apisecret, use_ssl=False)

login_result = api.login(user, pwd, manage_path)

if login_result['result'] == 'ok':
    # 更新session id防止会话过期,默认为30分钟过期。
    if api.update_session():
        print('update ok')
    else:
        print('update failed')

    # 取域名列表,按API接口说明的参数字典
    method_params = {
        "method": "domain"
    }

    method_result = api.get_api(**method_params)
    
    if method_result['result'] == 'ok':
        print(method_result)
    else:
        print(method_result)

else:
    print(login_result)


# 邮箱用户接口示例
user = 'usera'
pwd = 'mypassword'
# 邮件用户的参考:sessid包含的webmail风格。如果是手机可以使用6,普通PC用0
tid = 6
api = WinmailApi(server, port, apikey, apisecret, use_ssl=False)

login_result = api.login(user, pwd, tid=tid)
if login_result['result'] == 'ok':
    # print(api.url)
    # print(api.sessid)

    if api.update_session():
        print('update ok')
    else:
        print('update failed')

    # 写邮件操作示例
    # 上传附件操作,如果有多个附件可以一次请求也可以多次请求。每次请求的附件都会保留在邮件上除非使用reset清除。建议上传前清一下附件缓存
    method_params = {
        "method": "newmsg.reset",
    }
    method_result = api.get_api(**method_params)
    if method_result['result'] != 'ok':
        print(method_result)

    # 第一次上传多个附件
    method_params = {
        "method": "upload.upload",
        "attachfile": ['E://logs//webmail.log',
                'E://logs//system.log']
    }
    method_result = api.get_api(**method_params)
    if method_result['result'] != 'ok':
        print(method_result)
    # 第二次上传单个附件
    method_params = {
        "method": "upload.upload",
        "attachfile": 'E://logs//admin.log'
    }
    method_result = api.get_api(**method_params)
    if method_result['result'] != 'ok':
        print(method_result)

    # 写邮件信体
    method_params = {
        "method": "newmsg.send",
        "from": "AA<a@195.com>",
        "to": "B用户<b@195.com>",
        "subject": 'OpenApi写信测试',
        "msgbody": "<font color=red>RED content</font>",
        "ishtml": '1',
        "savetosent": '1'
    }
    method_result = api.get_api(**method_params)

    if method_result['result'] == 'ok':
        print(method_result)
    else:
        print(method_result)

else:
    print(login_result)

Winmail模块说明

:warning:Python必须运行在Winmail服务器上。不建议使用。

Winmail模板主要提供Winmail相关的参数路径获取。比如安装目录,域的邮件、网盘存储目录,用户邮件、网盘存储目录等。

也可以获取域名,用户,组列表。因为是直接读取配置文件和数据库,Openapi有接口的,建议使用OpenAPI接口。

初始化和数据库连接说明

已经支持的数据库为Sqlite、mysql、postgresql。

导入Winmail
from winmail import Winmail
wm = Winmail()
print(wm.get_mailarchive_path())
print(wm.get_user_alias_list())
# 按XML路径获取system.cfg中的配置项
print(wm.get_sys_config("./dboption/dbtype"))

属性包含:

winmail_path,
winmail_sys_conf_path,
winmail_domain_conf_path,
winmail_mailgroup_conf_path,
winmail_mailuser_stat_conf_path,
winmail_mailuser_conf_path,
db_type

方法包含:

connect_db,
get_sys_config,
get_db_type,
check_winmail_path,
get_user_mailstore_path,
get_user_netstore_path,
get_domain_mailstore_path,
get_domain_netstore_path,
get_mailbackup_path,
get_mailarchive_path,
get_pri_domain,
get_domain_list,
get_all_domain_list,	
get_domain_tuple_list,
get_user_list,
get_user_alias_list,
get_group_list,
check_pri_domain

Winmail中如果使用了Mysql数据库,请在实例化时初始化数据库密码。如:

from winmail import Winmail
wm = Winmail('mysql-password')
wm.connect_db()

如果Winmail中使用了Sqlite数据库,实例化时不需要密码。但在使用connect_db时,必须指定Sqlite操作的数据库文件路径,如:

from winmail import Winmail
wm = Winmail()
wm.connect_db(wm.winmail_mailuser_conf_path)

Com接口说明

:warning:Python必须运行在Winmail服务器上。只支持Windows平台,暂未全部完成Com接口,不建议使用。

请参考Winmail的Com接口文档。

from winmail import ComApi as WinmailCom

wc = WinmailCom()
winmail_db_path = wc.get_db_path()
add_domain = wc.add_domain('test.com')
print(add_domain)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

winmail-2023.11.21.tar.gz (22.8 kB view hashes)

Uploaded Source

Built Distribution

winmail-2023.11.21-py3-none-any.whl (24.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page