Click here to Skip to main content
15,886,823 members
Articles / Programming Languages / C#

MDaemon Controler for .NET

Rate me:
Please Sign up or sign in to vote.
4.65/5 (9 votes)
19 Feb 2010CPOL2 min read 77.2K   1.3K   20  
This .NET class allows to administrate the MDaemon Mail server, like creating domains and user accounts.
#pragma once
#include "MDUserImports.h"

using namespace System;
using namespace System::Collections;

namespace MDaemon
{
	public __gc class cUser
	{
	public:
		__value enum eAccessType : SByte
		{
			PopAndImap = 'Y',
			PopOrImap  = 'N',
			OnlyPop    = 'P',
			OnlyImap   = 'I',
			Disabled   = 'C'
		};

		[FlagsAttribute]
		__value enum eWebConfig : Int32
		{
			ACCESS_WORLDCLIENT      = MDUSERDLL_ACCESSWORLDCLIENT,
			ACCESS_WEBCONFIG        = MDUSERDLL_ACCESSWEBCONFIG,
			IS_ADMIN                = MDUSERDLL_ISADMIN,
			EDIT_FULLNAME           = MDUSERDLL_EDITFULLNAME,
			EDIT_PASSWORD           = MDUSERDLL_EDITPASSWORD,
			EDIT_MAILDIR            = MDUSERDLL_EDITMAILDIR,
			EDIT_FORWARD            = MDUSERDLL_EDITFWD,
			EDIT_ADVANCED_FOWARD    = MDUSERDLL_EDITADVFWD,
			EDIT_MAIL_ENCRYPT       = MDUSERDLL_EDITENCRYPT,
			EDIT_HIDE_FROM_EVERYONE = MDUSERDLL_EDITEVERYONE,
			EDIT_MAIL_RESTRICTIONS  = MDUSERDLL_EDITMAILRESTRICTIONS,
			EDIT_QUOTAS             = MDUSERDLL_EDITQUOTAS,
			EDIT_MULTIPOP           = MDUSERDLL_EDITMULTIPOP,
			EDIT_AUTO_RESPONDER     = MDUSERDLL_EDITAUTORESPONDER,
			EDIT_EMAIL_CHANGES      = MDUSERDLL_EDITEMAILCHANGES,
			EDIT_IMAP_RULES         = MDUSERDLL_EDITIMAPRULES,
			EDIT_MAILBOX            = MDUSERDLL_EDITMAILBOX
		};

		[FlagsAttribute]
		__value enum eDeleteFlags : Int32
		{
			USER_LIST_DB        = MDUSERDLL_DUSERLISTDB,
			AUTORESPONDER_DB    = MDUSERDLL_DAUTORESPDB,
			FORWARD_DB          = MDUSERDLL_DFWDDB,
			MAIL_FORMAT_DB      = MDUSERDLL_DMAILFORMATDB,
			WEBCONFIG_ACCESS_DB = MDUSERDLL_DWEBACCESSDB,
			MULTIPOP_DB         = MDUSERDLL_DMULTIPOPDB,
			ALIAS_DB            = MDUSERDLL_DALIASDB,
			REMOVE_DIR          = MDUSERDLL_DREMOVEDIR,
			LISTS               = MDUSERDLL_DLISTS,
			DELETE_ALL          = MDUSERDLL_DDELETEALL
		};

		__gc struct kAutoResponder
		{
			String* Script;
			String* Process;
			String* Exclude;
			String* AddToList;
			String* RemoveFromList;
			String* StartTime;
			String* EndTime;
			bool    PassMessage;
		};

		__gc struct kForwarding
		{
			String* Address;
			String* Host;
			String* SendAs;
			String* Port;
		};

		// -----------------------

		cUser();
		~cUser();
		void Add();
		void GetByEmail(String* s_Email);
		void Update();

		// STATIC
		static void Delete(String* s_Email, eDeleteFlags e_Flags);
		static bool Exists(String* s_Email);
		static ArrayList* GetAllUsers();

		// -----------------------

		String*  Email;
		String*  Mailbox;
		String*  Domain;
		String*  FullName;
		String*  MailDir;
		String*  Password;
		bool     AutoDecode;
		bool     IsForwarding;
		eAccessType AccessType;
		bool     AllowChangeViaEmail;
		bool     KeepForwardedMail;
		bool     HideFromEveryone;
		bool     ProcessCalendarRequests;
		bool     ApplyQuotas;
		bool     EnableMultiPOP;
		bool     CanModifyGAB;
		long     MaxMessageCount;
		long     MaxDiskSpace;
		eWebConfig WebConfig;
		String*  NTAccount;
		String*  MailFormat;
		int      MultiPOPMaxMessageAge;
		long     MultiPOPMaxMessageSize;
		bool     RecurseIMAP;
		bool     IsDisabled;
		bool     CheckAddrBook;
		bool     UpdateAddrBook;
		int      MaxInactive;
		int      MaxMessageAge;
		int      MaxDeletedIMAPMessageAge;
		String*  Comments;
		String*  UserDefined;
		String*  Groups;
		kForwarding*    Forwarding;
		kAutoResponder* AutoResponder;

		// -----------------------

	private:
		void CopyFromManaged(MD_UserInfo* pk_User);
		void CopyToManaged(MD_UserInfo* pk_User);
		void VerifyData(MD_UserInfo* pk_User);
		void CleanUp();

		IntPtr mh_Handle;
	};
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) ElmüSoft
Chile Chile
Software Engineer since 40 years.

Comments and Discussions