www.pudn.com > mailserver-muiter.zip > MAPICfg.cpp


// MAPICfg.cpp: Implementierungsdatei 
// 
 
#include "stdafx.h" 
#include "InetServer.h" 
#include "MAPICfg.h" 
#include "wrap2cmc.h"	// new 
#include "tools.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
 
extern Wrap2CMC  CMCObject; // new 
 
 
// Modified on 23.11.98 by yasin to accept only pop3 user name & MAPI user name 
// MAPI user address will be picked up via lookup on MSMAIL address list. 
// It would be better to logon to MSMAIL during startup/initialisation instead 
// of doing at each process level. 
///////////////////////////////////////////////////////////////////////////// 
// Dialogfeld CMAPICfg  
 
 
CMAPICfg::CMAPICfg(CWnd* pParent /*=NULL*/) 
	: CDialog(CMAPICfg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CMAPICfg) 
	m_e1 = _T(""); 
	m_e2 = _T(""); 
//	m_e3 = _T(""); 
	m_passwd = _T(""); 
	m_profile = _T(""); 
	//}}AFX_DATA_INIT 
} 
 
 
 
 
void CMAPICfg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CMAPICfg) 
	DDX_Control(pDX, IDC_LIST1, mc_list1); 
	DDX_Control(pDX, IDC_CHECK1, m_menabled); 
	DDX_Text(pDX, IDC_EDIT1, m_e1); 
	DDX_Text(pDX, IDC_EDIT2, m_e2); 
//	DDX_Text(pDX, IDC_EDIT3, m_e3); 
	DDX_Text(pDX, IDC_PASSWD, m_passwd); 
	DDX_Text(pDX, IDC_PROFILE, m_profile); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CMAPICfg, CDialog) 
	//{{AFX_MSG_MAP(CMAPICfg) 
	ON_BN_CLICKED(IDC_ADD, OnAdd) 
	ON_BN_CLICKED(IDC_CHANGE, OnChange) 
	ON_BN_CLICKED(IDC_DELETE, OnDelete) 
	ON_BN_CLICKED(IDOK, OnOk) 
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1) 
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList1) 
	ON_NOTIFY(LVN_ITEMCHANGING, IDC_LIST1, OnItemchangingList1) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// Behandlungsroutinen für Nachrichten CMAPICfg  
 
void CMAPICfg::OnAdd()  
{ 
	char tempstr[255]; 
	char mprofile[128]; 
	char mpasswd[128]; 
	CMC_recipient   *pRecipient = NULL  ; 
	CMC_recipient   Recip; 
	CMC_uint32      cCount; 
	long err ; 
 
		LV_ITEM			lvitem; 
		int iActualItem,iIcon; 
		iIcon = 0; 
 
		UpdateData(TRUE); 
 
		if (m_e1 == "") 
		{ 
			MessageBox("You must enter a pop3user!"); 
			return; 
 
		} 
		if (m_e2 == "") 
		{ 
			MessageBox("You must enter a MAPI-name!"); 
			return; 
 
		} 
		 
		//if (m_e3 == "") 
	//	{ 
	//		MessageBox("You must enter a MAPI-address!"); 
	//		return; 
 
	//	} 
	sprintf(mprofile,"%s",m_profile); 
	sprintf(mpasswd,"%s",m_passwd); 
	err = CMCObject.CMCLogon(mprofile,mpasswd);       //, 
	if ( err  != CMC_SUCCESS )  
	{ 
		 
		sprintf(tempstr,"Unable to logon to MSMail %d!",err); 
		MessageBox(tempstr); 
		return ; 
	} 
 
	sprintf(tempstr,"%s",m_e2); 
	cCount = 1 ; 
	Recip.name       = tempstr;                /* Send to Bob Weaver.     */ 
	Recip.name_type  = CMC_TYPE_INDIVIDUAL;    /* Bob's a person.         */ 
	Recip.address    = NULL;                   /* Look_up Bob's address.  */ 
	Recip.role       = 0;                      /* Role not used           */ 
	Recip.recip_flags      = 0;                /* No flag values          */ 
	Recip.recip_extensions = NULL;             /* No recipient extensions */ 
 
	if ( (CMCObject.CMCLookUp( 
					&Recip,    
					&cCount,   
					&pRecipient)) != CMC_SUCCESS ) 
	{ 
		MessageBox("Unable to resolve Name & Address!"); 
		UpdateData(FALSE); 
		return ; 
	} 
 
 
	 
	 
 
 
			lvitem.mask = LVIF_TEXT | LVIF_IMAGE; 
			lvitem.iItem = 0; 
			lvitem.iSubItem = 0; 
			lvitem.iImage = iIcon; 
			sprintf(tempstr,"%s",m_e1); 
			lvitem.pszText = tempstr; 
			iActualItem = mc_list1.InsertItem(&lvitem); 
			 
			lvitem.mask = LVIF_TEXT; 
			lvitem.iItem = iActualItem; 
			lvitem.iSubItem = 1; 
			//sprintf(tempstr,"%s",m_e2); 
			sprintf(tempstr,"%s",pRecipient->name); 
			lvitem.pszText = tempstr; 
			mc_list1.SetItem(&lvitem); 
			lvitem.iSubItem = 2; 
		//	sprintf(tempstr,"%s",m_e3); 
			sprintf(tempstr,"%s",pRecipient->address); 
			lvitem.pszText = tempstr; 
			mc_list1.SetItem(&lvitem); 
			 
UpdateData(FALSE); 
CMCObject.CMCFree(pRecipient); 
CMCObject.CMCLogoff(); 
 
	 
} 
 
void CMAPICfg::OnChange()  
{ 
	char tempstr[255]; 
	char mprofile[128]; 
	char mpasswd[128]; 
	CMC_recipient   *pRecipient = NULL  ; 
	CMC_recipient   Recip; 
	CMC_uint32      cCount; 
	long err ; 
 
 
		if (mc_list1.GetNextItem(-1,LVNI_SELECTED) == -1) return; 
 
 
		LV_ITEM			lvitem; 
 
		UpdateData(TRUE); 
 
		if (m_e1== "") 
		{ 
			MessageBox("You must enter a pop3-name!"); 
			return; 
 
		} 
		if (m_e2== "") 
		{ 
			MessageBox("You must enter a MAPI username!"); 
			return; 
 
		} 
 
sprintf(mprofile,"%s",m_profile); 
	sprintf(mpasswd,"%s",m_passwd); 
	err = CMCObject.CMCLogon(mprofile,mpasswd);       //, 
	if ( err  != CMC_SUCCESS )  
	{ 
		 
		sprintf(tempstr,"Unable to logon to MSMail %d!",err); 
		MessageBox(tempstr); 
		return ; 
	} 
 
	sprintf(tempstr,"%s",m_e2); 
	cCount = 1 ; 
	Recip.name       = tempstr;                /* Send to Bob Weaver.     */ 
	Recip.name_type  = CMC_TYPE_INDIVIDUAL;    /* Bob's a person.         */ 
	Recip.address    = NULL;                   /* Look_up Bob's address.  */ 
	Recip.role       = 0;                      /* Role not used           */ 
	Recip.recip_flags      = 0;                /* No flag values          */ 
	Recip.recip_extensions = NULL;             /* No recipient extensions */ 
 
	if ( (CMCObject.CMCLookUp( 
					&Recip,    
					&cCount,   
					&pRecipient)) != CMC_SUCCESS ) 
	{ 
		MessageBox("Unable to resolve Name & Address!"); 
		UpdateData(FALSE); 
		return ; 
	} 
 
 
		//if (m_e3 == "") 
		//{ 
		//	MessageBox("You must enter a MAPI-address!"); 
		//	return; 
 
		//} 
 
char t1[255]; 
char t2[255]; 
char t3[255]; 
sprintf(t1,"%s",m_e1); 
sprintf(t2,"%s",pRecipient->name); 
sprintf(t3,"%s",pRecipient->address); 
 
			 
 
 
			lvitem.mask = LVIF_TEXT; 
			lvitem.iItem = mc_list1.GetNextItem(-1,LVNI_SELECTED); 
			lvitem.iSubItem = 0; 
			lvitem.iImage = 0; 
			lvitem.pszText = t1; 
			mc_list1.SetItem(&lvitem); 
 
			lvitem.iSubItem = 1; 
			lvitem.pszText = t2; 
			mc_list1.SetItem(&lvitem); 
			 
			lvitem.iSubItem = 2; 
			lvitem.pszText = t3; 
 
			mc_list1.SetItem(&lvitem); 
			 
 
			m_e1 = t1; 
			m_e2 = t2; 
		//	m_e3 = t3; 
 
 
			UpdateData(FALSE); 
CMCObject.CMCFree(pRecipient); 
CMCObject.CMCLogoff(); 
 
			 
} 
 
void CMAPICfg::OnDelete()  
{ 
 
if (mc_list1.GetNextItem(-1,LVNI_SELECTED) == -1) return; 
 
UpdateData(TRUE); 
mc_list1.DeleteItem(mc_list1.GetNextItem(-1,LVNI_SELECTED)); 
 
} 
 
BOOL CMAPICfg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	CDialog::OnInitDialog(); 
	 
	CImageList	*m_pimagelistSmall; 
	m_pimagelistSmall = new CImageList(); 
	m_pimagelistSmall->Create(16, 16, TRUE/*bMask*/, 1, 4); 
	m_pimagelistSmall->Add(AfxGetApp()->LoadIcon(IDI_MAPI)); 
	 
 
	CRect			rect; 
	LV_COLUMN		lvcolumn; 
	TCHAR			rgtsz[3][20] = {_T("From"),_T("To User"),_T("MAPI Address")}; 
 
	mc_list1.SetImageList(m_pimagelistSmall, LVSIL_SMALL); 
	mc_list1.GetWindowRect(&rect); 
 
		lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH; 
		lvcolumn.fmt = LVCFMT_LEFT; 
		lvcolumn.pszText = rgtsz[0]; 
		lvcolumn.iSubItem = 0; 
 
		lvcolumn.cx = 100;   
 
		mc_list1.InsertColumn(0, &lvcolumn);   
				 
 
		lvcolumn.pszText = rgtsz[1]; 
		lvcolumn.iSubItem = 1; 
		lvcolumn.cx = 70;   
		 
		mc_list1.InsertColumn(1, &lvcolumn);   
		 
 
		lvcolumn.pszText = rgtsz[2]; 
		lvcolumn.iSubItem = 2; 
		lvcolumn.cx = 80;   
		 
		mc_list1.InsertColumn(2, &lvcolumn);   
		 
 
		LV_ITEM			lvitem; 
		int iActualItem,iIcon; 
		iIcon = 0; 
 
////////////////////////////////////////////////////////// 
 
FILE *stream; 
char tempstr[255]; 
if( (stream  = fopen("mapifwd.ctl", "rt" )) != NULL ) 
  { 
 
while (!feof(stream)) 
{ 
fgets(tempstr,255,stream); 
if (!feof(stream)) 
{ 
UpdateData(TRUE); 
 
			lvitem.mask = LVIF_TEXT | LVIF_IMAGE; 
			lvitem.iItem = 0; 
			lvitem.iSubItem = 0; 
			lvitem.iImage = iIcon; 
			tempstr[strlen(tempstr)-1] = '\0'; 
			lvitem.pszText = tempstr; 
			 
			iActualItem = mc_list1.InsertItem(&lvitem); 
			 
			lvitem.mask = LVIF_TEXT; 
			lvitem.iItem = iActualItem; 
			lvitem.iSubItem = 1; 
			fgets(tempstr,255,stream); 
			tempstr[strlen(tempstr)-1] = '\0'; 
 
			lvitem.pszText = tempstr; 
 
			mc_list1.SetItem(&lvitem); 
			lvitem.iSubItem = 2; 
			fgets(tempstr,255,stream); 
			tempstr[strlen(tempstr)-1] = '\0'; 
			lvitem.pszText = tempstr; 
 
			mc_list1.SetItem(&lvitem); 
 
			 
 
UpdateData(FALSE); 
} 
} 
fclose(stream); 
} 
else 
{ 
MessageBox("Could not open mapifwd.ctl!"); 
} 
 
 
char tempstr1[255]; 
UpdateData(TRUE); 
sprintf(tempstr1,"%s",GetReg("Software\\InetServ","MapiPassword")); 
m_passwd = tempstr1; 
sprintf(tempstr1,"%s",GetReg("Software\\InetServ","MapiProfile")); 
m_profile = tempstr1; 
 
 
sprintf(tempstr1,"%s",GetReg("Software\\InetServ","MapiEnabled")); 
if (strcmp(tempstr1,"TRUE") == 0) m_menabled.SetCheck(1); 
if (strcmp(tempstr1,"FALSE") == 0) m_menabled.SetCheck(0); 
 
UpdateData(FALSE); 
	 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben 
} 
 
void CMAPICfg::OnOk()  
{ 
 
	 
 
char tempstr[255]; 
UpdateData(TRUE); 
sprintf(tempstr,"%s",m_profile); 
SetReg("Software\\InetServ","MapiProfile" ,tempstr); 
sprintf(tempstr,"%s",m_passwd); 
SetReg("Software\\InetServ","MapiPassword" ,tempstr); 
 
 
if (m_menabled.GetCheck() == 0) SetReg("Software\\InetServ","MapiEnabled" ,"FALSE"); 
if (m_menabled.GetCheck() == 1) SetReg("Software\\InetServ","MapiEnabled" ,"TRUE"); 
 
 
 
UpdateData(FALSE); 
 
 
FILE *stream; 
   if( (stream  = fopen("mapifwd.ctl", "wt" )) != NULL ) 
   { 
	   CString pop3user; 
	   CString username; 
	   CString passw; 
 
 
for (int i = 0;i<=mc_list1.GetItemCount()-1;i++) 
{ 
pop3user = mc_list1.GetItemText( i, 0 ); 
username= mc_list1.GetItemText( i, 1); 
passw = mc_list1.GetItemText( i, 2); 
 
fprintf(stream,pop3user); 
fprintf(stream,"\n"); 
fprintf(stream,username); 
fprintf(stream,"\n"); 
fprintf(stream,passw); 
fprintf(stream,"\n"); 
} 
 
fclose(stream); 
} 
else 
{ 
MessageBox("Could not save mapifwd.ctl!"); 
 
} 
 
 
 
 
 
	 
	CDialog::OnOK(); 
} 
 
void CMAPICfg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)  
{ 
	UpdateData(TRUE); 
	m_e1 =  mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),0); 
	m_e2 =  mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),1); 
//	m_e3 =  mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),2); 
	UpdateData(FALSE); 
	 
	*pResult = 0; 
} 
 
void CMAPICfg::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult)  
{ 
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; 
	UpdateData(TRUE); 
	m_e1 =  mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),0); 
	m_e2 =  mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),1); 
//	m_e3 =  mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),2); 
	UpdateData(FALSE); 
	 
	 
	*pResult = 0; 
} 
 
void CMAPICfg::OnItemchangingList1(NMHDR* pNMHDR, LRESULT* pResult)  
{ 
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; 
	UpdateData(TRUE); 
	m_e1 =  mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),0); 
	m_e2 =  mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),1); 
//	m_e3 =  mc_list1.GetItemText(mc_list1.GetNextItem(-1,LVNI_SELECTED),2); 
	UpdateData(FALSE); 
	 
	 
	*pResult = 0; 
}