解析大型.NET ERP系统 电子邮件系统帐户集成

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 为保证ERP系统的信息流准确快速的传递,需要给系统设计一个消息盒子机制。当系统中发生业务操作后,需要提醒下一个环节的操作人员,以保证ERP信息流快速准确传递。比如生产任务单(工作单,加工单,制单)过帐完成后,需要通知仓库准备材料供车间领料生产。

为保证ERP系统的信息流准确快速的传递,需要给系统设计一个消息盒子机制。当系统中发生业务操作后,需要提醒下一个环节的操作人员,以保证ERP信息流快速准确传递。比如生产任务单(工作单,加工单,制单)过帐完成后,需要通知仓库准备材料供车间领料生产。消息盒子的界面大致如下所示:


解析大型.NET ERP系统 电子邮件系统帐户集成



消息盒子包含业务通知(Messages)工作流审批(Workflow)。业务通知比如采购人员下达采购订单PO后,需要通知仓库人员准备收货。工作流审批是以审批为基础的单据流程控制。


在实现消息盒子过程中,遇到一个客户需要将消息同时发送到电子邮件系统中,于是撰此文以分享实现过程。


客户的目的很简单,发送消息的同时,也将此消息抄送到相应的邮件帐户中:


解析大型.NET ERP系统 电子邮件系统帐户集成



实施部分


1 搭建电子邮件服务器


有以下几种选择


1 与Outlook搭配的邮件服务器Exchange Server是一个很好的邮件服务器,只是配置稍微复杂一点。


2 Magic WinMail ,WinWebMail 免费版可发布50-100个帐户,超过此限制需要购买授权。


3 hMailServer 开源,免费,无限制。提供COM接口可供二次开发。


最终选择hMailServer作为ERP系统的邮件服务器。配置过程此处略过。


安装好hMailServer后,创建域名EnterpriseSolution.com,并启用它。


解析大型.NET ERP系统 电子邮件系统帐户集成



2 同步帐户邮件


打开同步程序,如下图所示,输入管理员密码后连接到邮件服务器中。这是我调用COM接口完成的程序。


解析大型.NET ERP系统 电子邮件系统帐户集成



在这个程序中, 可以将ERP用户的邮件同步到hMailServer的帐户表中。


点击同步按钮,打开ERP帐户选择窗体,再点击确认之后,ERP中的帐户就同步到hMailServer邮件系统中。


解析大型.NET ERP系统 电子邮件系统帐户集成



查看hMailServer的帐户:


解析大型.NET ERP系统 电子邮件系统帐户集成



开发部分


下面详细讲解一下上面的同步程序是如何实现的,它是一个简单的C#调用C++ COM接口的程序。hMailServer官方给出的COM帮助文档地址在这里:https://www.hmailserver.com/documentation/v5.6/?page=com_objects


1 读取邮件系统帐户


先创建连接到hMailSever服务器


private Domain HMailServerConnection()

{

string hMailDomain = txtDomain.Text;

string HMailUsername = "Administrator";

string HMailPassword = txtPassword.Text;

var objGlobal = new ApplicationClass();

objGlobal.Authenticate(HMailUsername, HMailPassword);

return objGlobal.Domains.get_ItemByName(hMailDomain);

}


大部分时间我们都是与接口对象Domain交互。


然后读取帐户表数据绑定到界面网格控件中。


DataTable table = new DataTable("Table");

table.Columns.Add("Address", typeof (string));

table.Columns.Add("Password", typeof (string));

table.Columns.Add("PersonFirstName", typeof (string));

table.Columns.Add("PersonLastName", typeof (string));

_domain = HMailServerConnection();

Accounts accounts = _domain.Accounts;

for (int i = 0; i < accounts.Count; i++)

{

Account account = accounts[i];

DataRow dataRow = table.NewRow();

dataRow["Address"] = account.Address;

dataRow["Password"] = account.Password;

dataRow["PersonFirstName"] = account.PersonFirstName;

dataRow["PersonLastName"] = account.PersonLastName;

table.Rows.Add(dataRow);

}

gridAccount.AutoGenerateColumns = false;

gridAccount.DataSource = table;


2 添加邮件帐户


参考下面的代码调用


Domain domain = HMailServerConnection();

Accounts accounts = domain.Accounts;

Account mailbox = accounts.Add();

mailbox.Address = email;

mailbox.Password = password;

mailbox.Save();


3 清除邮件帐户


参考下面的代码


Accounts accounts = _domain.Accounts;

int count = accounts.Count;

while (count > 0)

{

_domain.Accounts.Delete(0);

count--;

}

_domain.Accounts.Refresh();


hMailSever提供的COM接口是x86架构的,所以这个项目我只能设x86编译平台。


4 多国语言


这个项目还有涉及到多语言实现,我采用的是一个公共方法翻译界面上的控件,参考下面的代码。


public static void TranslateForm(Form form)

{

string labelText = string.Empty;

DataRow dataRow = null;

string translation = string.Empty;

switch (Application.CurrentCulture.LCID)

{

case 2052:

translation = "CHS";

break;

case 1028:

case 3076:

case 5124:

translation = "CHT";

break;

}

foreach (var label in GetAllControlsRecusrvive<Label>(form))

{

labelText = label.Text.Trim().TrimEnd(':');

dataRow = Shared.TranslationTable.Rows.Find(labelText);

if (dataRow != null)

label.Text = Convert.ToString(dataRow[translation]);

}


我只需要在每个界面的窗体加载事件中调用上面的方法即可完成多语言功能。


protected override void OnLoad(EventArgs e)

{

base.OnLoad(e);

Shared.TranslateForm(this);

}


界面翻译项来自于项目嵌入的Xml资源文件。


项目源代码文件:http://files.cnblogs.com/files/JamesLi2015/Synchronization.zip


云服务器ECS地址:阿里云·云小站


相关文章
|
18天前
|
存储 算法 安全
.NET 平台 SM2 国密算法 License 证书生成深度解析
授权证书文件的后缀通常取决于其编码格式和具体用途。本文档通过一个示例程序展示了如何在 .NET 平台上使用国密 SM2 算法生成和验证许可证(License)文件。该示例不仅详细演示了 SM2 国密算法的实际应用场景,还提供了关于如何高效处理大规模许可证文件生成任务的技术参考。通过对不同并发策略的性能测试,开发者可以更好地理解如何优化许可证生成流程,以满足高并发和大数据量的需求。 希望这段描述更清晰地传达了程序的功能和技术亮点。
89 13
.NET 平台 SM2 国密算法 License 证书生成深度解析
|
8天前
|
开发框架 .NET 中间件
.net8 使用 license 证书授权案例解析
本文介绍了如何使用 `.NET CLI` 创建并改造一个 `ASP.NET Core Web API` 项目,以实现基于许可证的授权机制。具体步骤包括创建项目、添加必要的 NuGet 包(如 `Standard.Licensing` 和 `Swashbuckle.AspNetCore`),以及修改 `Program.cs` 文件以集成自定义的许可证验证中间件。项目结构中新增了 `LicenseController` 接口用于处理授权相关操作,并通过测试流程验证了默认天气接口在未授权和授权状态下的响应情况。整个过程确保了应用程序能够在启动时正确验证许可证,保障系统的安全性与可控性。
47 8
.net8 使用 license 证书授权案例解析
|
1天前
|
人工智能 自然语言处理 算法
DeepSeek大模型在客服系统中的应用场景解析
在数字化浪潮下,客户服务领域正经历深刻变革,AI技术成为提升服务效能与体验的关键。DeepSeek大模型凭借自然语言处理、语音交互及多模态技术,显著优化客服流程,提升用户满意度。它通过智能问答、多轮对话引导、多模态语音客服和情绪监测等功能,革新服务模式,实现高效应答与精准分析,推动人机协作,为企业和客户创造更大价值。
44 5
|
5天前
|
存储 前端开发 JavaScript
在线教育网课系统源码开发指南:功能设计与技术实现深度解析
在线教育网课系统是近年来发展迅猛的教育形式的核心载体,具备用户管理、课程管理、教学互动、学习评估等功能。本文从功能和技术两方面解析其源码开发,涵盖前端(HTML5、CSS3、JavaScript等)、后端(Java、Python等)、流媒体及云计算技术,并强调安全性、稳定性和用户体验的重要性。
|
2月前
|
存储 分布式计算 Hadoop
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
73 7
|
3月前
|
存储 监控 算法
企业内网监控系统中基于哈希表的 C# 算法解析
在企业内网监控系统中,哈希表作为一种高效的数据结构,能够快速处理大量网络连接和用户操作记录,确保网络安全与效率。通过C#代码示例展示了如何使用哈希表存储和管理用户的登录时间、访问IP及操作行为等信息,实现快速的查找、插入和删除操作。哈希表的应用显著提升了系统的实时性和准确性,尽管存在哈希冲突等问题,但通过合理设计哈希函数和冲突解决策略,可以确保系统稳定运行,为企业提供有力的安全保障。
|
3月前
|
安全 前端开发 Android开发
探索移动应用与系统:从开发到操作系统的深度解析
在数字化时代的浪潮中,移动应用和操作系统成为了我们日常生活的重要组成部分。本文将深入探讨移动应用的开发流程、关键技术和最佳实践,同时分析移动操作系统的核心功能、架构和安全性。通过实际案例和代码示例,我们将揭示如何构建高效、安全且用户友好的移动应用,并理解不同操作系统之间的差异及其对应用开发的影响。无论你是开发者还是对移动技术感兴趣的读者,这篇文章都将为你提供宝贵的见解和知识。
|
3月前
|
安全 搜索推荐 数据挖掘
陪玩系统源码开发流程解析,成品陪玩系统源码的优点
我们自主开发的多客陪玩系统源码,整合了市面上主流陪玩APP功能,支持二次开发。该系统适用于线上游戏陪玩、语音视频聊天、心理咨询等场景,提供用户注册管理、陪玩者资料库、预约匹配、实时通讯、支付结算、安全隐私保护、客户服务及数据分析等功能,打造综合性社交平台。随着互联网技术发展,陪玩系统正成为游戏爱好者的新宠,改变游戏体验并带来新的商业模式。
202 0
|
3月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
|
6月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
88 7

热门文章

最新文章

推荐镜像

更多