In order to ensure the accurate and fast transmission of the information flow in ERP system, a message box mechanism is needed for the system design. When business operations occur in the system, it is necessary to remind the operators of the next link to ensure the rapid and accurate transmission of the ERP information flow. such as production task orders (work orders, processing orders, orders) after the completion of the post, you need to inform the warehouse preparation materials for the workshop picking material production. The interface of the message box is as follows:
The message box contains business notifications (Messages) and workflow Approvals (Workflow). Business notifications such as when a purchase order PO is issued by a purchaser, the warehouse personnel need to be notified to prepare the receipt. Workflow approval is a document process control based on approval.
In the implementation of the message box process, encountered a customer needs to send the message to the e-mail system, so wrote this article to share the implementation process.
The purpose of the customer is simple, and the message is sent to the appropriate mail account as well:
Implement part 1 to build an email server
There are several options:
1 mail server with Outlook Exchange Server is a good mail server, but the configuration is slightly more complicated.
2 Magic winmail, Winwebmail Free Edition can publish 50-100 accounts, exceeding this limit requires purchase authorization.
3 hMailServer Open Source, free, unlimited. A COM interface is available for two development.
Finally choose hMailServer as the mail server of ERP system. The configuration process is skipped here.
After installing hMailServer, create the domain name enterprisesolution.com and enable it.
2 Synchronizing account messages
Open the Synchronizer, as shown in, and then connect to the mail server after you enter the administrator password. This is the program that I called the COM interface to complete.
In this program, the ERP user's mail can be synced to the hMailServer account table.
Click the Sync button, open the ERP account selection form, and then click Confirm, the account in the ERP is synced to the hMailServer mail system.
To view hMailServer's account:
Development section
Here is a detailed explanation of how the above synchronization program is implemented, it is a simple C # call C + + COM interface program. hMailServer officially given the address of the COM Help document here: Https://www.hmailserver.com/documentation/v5.6/?page=com_objects
1 Read mail SYSTEM account
Create a connection to the Hmailsever server first
Private Domain hmailserverconnection ()
{
string hmaildomain = Txtdomain.text;
string Hmailusername = "Administrator";
string Hmailpassword = txtPassword.Text;
New ApplicationClass ();
Objglobal.authenticate (Hmailusername, Hmailpassword);
return objGlobal.Domains.get_ItemByName (hmaildomain);
}
Most of the time we interact with the interface object domain.
Then read the Account table data bound in the interface grid control.
New DataTable ("Table");
Table. Columns.Add ("Addresstypeof (string)");
Table. Columns.Add ("Passwordtypeof (string)");
Table. Columns.Add ("personfirstnametypeof (string)");
Table. Columns.Add ("personlastnametypeof (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);
}
false;
Gridaccount.datasource = table;
2 Adding mail accounts
Refer to the following code call
Domain domain = hmailserverconnection ();
Accounts Accounts = domain. Accounts;
Account mailbox = accounts. ADD ();
Mailbox. Address = email;
Mailbox. Password = Password;
Mailbox. Save ();
3 Clearing mail accounts
Refer to the following code
Accounts Accounts = _domain. Accounts;
int count = accounts. Count;
while (Count > 0)
{
_domain. Accounts.delete (0);
count--;
}
_domain. Accounts.refresh ();
The COM interface provided by Hmailsever is x86 architecture, so I can only set the x86 compiler platform for this project.
4 Multi-lingual
This project also involves multi-language implementations, and I'm using a common method of translating the controls on the interface, referring to the following code.
Public Static void Translateform (Form form)
{
string string. Empty;
null;
string string. Empty;
Switch (Application.CurrentCulture.LCID)
{
Case 2052:
Translation = "CHS";
break;
Case 1028:
Case 3076:
Case 5124:
Translation = "CHT";
break;
}
foreach inch Getallcontrolsrecusrvive<label> (Form))
{
LabelText = label. Text.trim (). TrimEnd (': ');
DataRow = Shared.TranslationTable.Rows.Find (LabelText);
if null)
Label. Text = convert.tostring (Datarow[translation]);
}
I just need to call the method above in the form-loading event of each interface to complete the multilanguage feature.
protected Override void OnLoad (EventArgs e)
{
base. OnLoad (e);
Shared.translateform (this);
}
The interface translation is derived from the XML resource file embedded in the project.
Project source code file: Http://files.cnblogs.com/files/JamesLi2015/Synchronization.zip
Parsing large. NET ERP System account integration for e-mail systems