⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapicfg.cpp

📁 一个SMTP邮件发送的源代码
💻 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黵 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);       //<mapi_profile>,<password>
	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);       //<mapi_profile>,<password>
	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點kgeben
}

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;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -