WinWebMail,是一个比较轻量级的邮件服务器系统,适用于中小型企业的邮件系统,功能也比较齐全,关于它的详细介绍可参见官网地址:http://www.winwebmail.com/.从网上去下载一个安装到机器上,我们公司服务器上安装的是WinWebMail 3.7.6.1 企业版,安装的时候它回自动生成网站文件目录,全部都是ASP的页面,在IIS里面创建一个虚拟目录指向该Web文件夹,按照他的一些说明配置好权限等,这样我们就在网页使用它的邮件服务了.

它的Web客户端比较简洁,不过该有的功能还是都有.第一次用admin进去添加一个域,再添加到一个用户进去,我们就拥有该域名的邮箱.注意,如果你这台机器并没有独立网络IP地址或者域名没有解析到你这里你也能添加域,比如我添加一个microsoft.com的域,再到里面添加一个用户jonllen,那我登陆jonllen@microsoft.com用户,我也能以它的用户名发送出邮件,呵呵,不过对方看到的应该是在垃圾邮件里面,因为现在一般邮件服务器都会判断邮件域名和发送的来源是不是同一个地方,不是同一个地方就认为是伪造的垃圾邮件,而且对方回复你也不能收到,因为microsoft.com不是解析到你那里,先来看一张WinWebMail登陆后的截图.

发送邮件就只能在Web页面里面操作是往往不够的.比如系统自动发送邮件、定时群发邮件等这些操作是不可能再跑到它的页面手工去发送,而应该要能在程序里调用他的接口进行发送邮件,而且最近可能会要开发一套OA,里面就要企业邮件,OA里注册一个帐户就需要开一个邮件帐户,并且建立企业员工通讯录,邮件信息为内部相互通讯,且也能直接发送到外部邮箱,不过WinWebMail好象就提供接口方式好象就是Web网页访问的形式而已,不过打开它里面的asp页面,我们能看到里面一些这样的代码.

dim ei
set ei = server.createobject("easymail.InfoList")
username = Session("wem")
ei.LoadMailBox username, trim(request("mode"))
'-----------------------------------------

懂asp的朋友都知道,它里面使用server.createobject是创建一个对象,比如对数据的连接操作都是要用到server.createobject,而asp里面的变量是弱变量类型,变量无须声明就可以使用的,那么上面代码里面server.createobject("easymail.InfoList")创建的是什么对象呢?突然想起来,WinWebMail它还有个C/S的客户端界面,但是要到服务器上进去才能看到操作的,功能比较的简单,可以增加用户和配置域,还可以修改一些系统的设置,打开任务管理查看所有进程,可以看到它其实是就是一个程序,你也可以关闭,但是还有一个名为emsvr的进程,它便就是WebWinWeb邮件系统的后台服务,最核心的地方还是在这里!那么它们之间是怎么实现相互调用的呢?细心的程序员很快就会想到是用COM组件,因为COM组件通过接口能方便的实现相互调用通讯甚至为不同的语言,在VS里面添加引用,选择COM组件,果然有WinWebMail的组件,如下图.

那么,上面server.createobject的就可以解释为创建调用的COM组件对象了.既然有COM组件接口可以调用,那么就好办了.因为COM组件接口能跨任何语言调用,如果为标准的DLL组件的话,我们还可以使用非托管动态链接库的方法进行引用,不过那好象你必须都要知道它的一些方法名和参数等.难道我去它的那些asp页面里一个个找出来不成?而且你没有相关文档还先得要搞清它的整个页面逻辑,就算你都找到了那也不一定就是你要的方法名,那改如何是好呢?上面不是用VS来引用COM吗?没错!我们在项目里面添加WebEasyMail的COM组件,VS会帮我们自动生成一个Interop.EASYMAILLib.dll文件到Bin目录,我们使用对象浏览器打开,它里面的接口属性类一览如余.

我们要操作调用COM接口,那我们调用它生成的类即是,就是这么的简单,非常的方便.写代码的话我们先实例化它里面的类,我们能看到类里面有很多的方法和属性.刚开始你可能会对它里面的一些属性和方法是干什么的不太明白.但是你可以打开它的asp页面里的代码,先看下它调用的整个步骤,也许你就有一些思绪了.我为了做得通用,把一些常见的操作都用C#写成了WebService方法.我这里贴出一个返回用户邮件夹信息(包括名称、总数量大小和新邮件数)的方法.

[WebMethod(Description = "返回邮件箱 包含名称、邮件数和大小等信息")]
[System.Xml.Serialization.XmlInclude(typeof(MailBox))]
[SoapHeader("Usheader", Direction = SoapHeaderDirection.In)]
public MailBox[] GetMailBoxes(string username)
{

InfoListClass infos = new InfoListClass();
if (!username.Contains("@"))
username += System.Configuration.ConfigurationManager.AppSettings["EmailPostfix"];
infos.LoadSizeInfo(username);
System.Collections.Generic.List<MailBox> list = new System.Collections.Generic.List<MailBox>();
list.Add(new MailBox("收件箱", "in", infos.inboxMailCount, infos.newInBoxMailCount, infos.inboxMailSize));
list.Add(new MailBox("草稿箱", "out", infos.outboxMailCount, infos.newOutBoxMailCount, infos.outboxMailSize));
list.Add(new MailBox("发件箱", "sed", infos.sendboxMailCount, infos.newSendBoxMailCount, infos.sendboxMailSize));
list.Add(new MailBox("垃圾箱", "del", infos.delboxMailCount, infos.newDelBoxMailCount, infos.delboxMailSize));
for (int i = 0; i < infos.PerFolderCount; i++)
{
MailBox box = new MailBox();
infos.GetPerFolderInfo(i, ref box.name, ref box.mailcount, ref box.size, ref box.newmailcount);
box.code = box.name.ToString();
list.Add(box);

}
list.Add(new MailBox("合计", "all", infos.allMailCount, infos.allNewMailCount, infos.allMailSize));
return list.ToArray();

}

其他添加域、用户、收发邮件也能以次类推写出来,只不过你可能要参考它asp页面的一些方法,调用正确才能返回结果.注意:它接口里面没有一个实体对象模型,里面所有的结果都是使用ref来赋值的,取多条结果则是通过for循环,它asp页面里调用好象也都是这样做的.我的做的时候调试也是比较的郁闷.因为是本地在公司的一个局域网,我用上面写的那些方法竟然都调用不了,也没有报错,就是没有结果返回,但是进它的asp网站里面操作又都行!害得我郁闷了好久.后来把代码传到服务器上,直接用WebService访问,竟然又行.那证明我写的那些方法是没有错,那到底是那里有问题了呢?我现在还是不太明白.

不过既然能在服务器上运行就OK了,因为邮件服务器最终都将是要部署在服务器上的,这样我们就也能把添加用户、企业通讯录、收发邮件的这样方法以WebService的方式提供出来,如果公司还有OA、ERP、人力资源管理系统等都可以方便的调用,而且能统一域下用户管理,实现企业用户员工的邮件通讯.有需要使用邮件系统的朋友可以考虑使用WinWebMail.我这里提供一个WinWebMailv3.7.6.1 企业版的破解版下载,仅供非商业用途学习测试使用,感兴趣的朋友可以来下载,正式使用请到官网购买付费版本.

WinWebMailv3.7.6.1 企业破解版下载

特别申明:本文及内容如非特别注明,均为本人Jonllen原创,版权均归原作者个人所有,转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/Jonllen/archive/2009/01/07/1370775.html

二次开发WinWebMail邮件系统接口 - 企业邮件服务器解决方案相关推荐

  1. linux环境下企业基于域名访问的web于电子邮件服务器 论文,基于Linux平台的企业邮件服务器搭建...

    我失骄杨君失柳,杨柳轻飏直上重霄九.得道多助,失道寡助.身后有余忘缩手,眼前无路想回头.鸟宿池边树,僧敲月下门.想当年,金戈铁马,气吞万里如虎. 本文由418133804贡献 pdf文档可能在WAP端 ...

  2. linux 企业邮件服务器_什么是Linux服务器,为什么您的企业需要一个?

    linux 企业邮件服务器 IT组织努力通过提高生产率和提供服务的速度来交付业务价值,同时保持足够的灵活性以结合云,容器和配置自动化等创新技术. 无论是在裸机,虚拟机,容器,私有云还是公共云上运行的现 ...

  3. 实验项目:用IMAIL构建企业邮件服务器

    <网络管理>实验报告书 课程名称 网络管理 实验项目 实验项目:用IMAIL构建企业邮件服务器 实验项目类型 验 证 演示 综合 设计 其他 一.实验目的 (1) 掌握利用Imail软件构 ...

  4. 企业邮件服务器搭建之品牌形象塑造

    为什么80%的码农都做不了架构师?>>>    企业邮件服务器搭建,顾名思义即为企业所专门搭建的邮件服务器系统,其目的则主要是通过独立邮件系统,使之能够更好地处理企业内外的电子邮件业 ...

  5. 【企业邮件服务器搭建过程】

    企业邮件服务器搭建 一.准备环境 二.DNS服务搭建 三.发送端配置 四.接收端配置 五.mail+web界面 一.准备环境 Centos7以上 yum -y install bind yum -y ...

  6. springmvc web网站开发上传视频到远程服务器解决方案

    springmvc web网站开发上传视频到远程服务器解决方案!近期在给学校做官方网站设计时,有一个业务需求是,后台要增加一个视频管理模块,管理员在后台可以把本地硬盘剪辑好的视频文件,上传到远程服务器 ...

  7. gige相机二次开发_GigE Vision接口摄像机及其应用

    摘  要: GigE Vision接口技术成为了机器视觉工业的一项非常具有吸引力的技术,Basler scout系列GigE Vision摄像机具有卓越的性能, Basler提供了Pylon驱动包开发 ...

  8. 自动化测试平台(二):开发用户认证接口

    一.前言 对于一个系统来讲,用户模块是非常基本且重要的.搭建的测试平台也需要对用户.用户权限等进行管理.下面为你讲解如何通过DRF来快速的做一个用户登录的验证接口. 完整教程地址:<从0搭建自动 ...

  9. EasyNVR二次开发云台控制接口实例

    1.背景需求 通过EasyNVR接口,二次开发集成在自己的原有的web业务系统上云台控制及实时直播功能,demo效果入下. demo是通过vue-cli脚手架搭建起来,简单说一下,目录结构 对easy ...

最新文章

  1. DataGrid连接Access的快速分页法——动态生成SQL语句
  2. 数据库附加出错显示服务器,SQL Server数据库附加失败的解决办法
  3. 《数学之美》第3章 统计语言模型
  4. 【命令init3/5】centos7切换图像界面和dos界面
  5. GHOST_XP详细制作过程
  6. CentOS系统设置开机自启动
  7. 如何上传应用到百度应用(图解攻略)
  8. consul 自动发现与自动注册
  9. python psycopg2使用_python 操作数据库:psycopg2的使用
  10. 校长回应8名考生放弃清华北大:不喜欢学医才去其他
  11. 解决域中打印机不能共享打印的问题
  12. 关于基础类数据结构的设计想法
  13. 蓝牙技术和2.4G及wifi技术的区别
  14. CT一般扫描参数_最实用GE 64排 CT扫描技术请保存、收藏
  15. python中sep是什么意思_python中sep是什么意思
  16. 基于肤色高斯概率模型的人脸检测
  17. 军品三大基线(功能基线、分配基线、产品基线)及基线包含的文件
  18. Python如何删除多余的空格与空行(有代码)
  19. 用 顶部tab栏 做排班表
  20. 清华集训2017题解

热门文章

  1. windos怎么查看oracle进程,在windows下查看oracle的后台进程
  2. 牛B的JustDecompile
  3. babun登陆mysql_SQL优化 MySQL版 - 多表优化及细节详讲
  4. Himall商城SendMail发件人信息设置
  5. 网络上常见的几种验证码识别方式
  6. 企业微信禁止分享转发
  7. 如何获取暗黑模式的状态?
  8. Java Web实习笔记
  9. mysql-8.0.29-winx64下载及安装教程
  10. 不去奥斯汀同样收获满满,OpenStack技术峰会议题大揭秘