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

📄 csendmailmanager.cpp

📁 这个基于嵌入式平台SMART PHONE电子邮件收发管理系统(MAIL MAN是一个电子邮件客户端软件。它以很小的体积
💻 CPP
字号:
// CSendMailManager.cpp: implementation of the CSendMailManager class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "CSendMailManager.h"
#include "resource.h"
#include "stdio.h"
#include "eSmtp.h"
#include "userData.h"
#include "harTransform.h"
extern userDataDB* g_puserDataDB;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CSendMailManager::CSendMailManager()
{

}

CSendMailManager::~CSendMailManager()
{

}

BOOL CSendMailManager::CreateUserDirectory(LPWSTR username)
{
	TCHAR	path[100];
	TCHAR   forder[30];
	LoadString(g_hInst,IDS_STRING_APPDATAPATH,path,100);
	LoadString(g_hInst,IDS_STRING_SENDFORDER,forder,30);

	lstrcat(path,L"\\");
	lstrcat(path,forder);
	CreateDirectory(path,NULL);

	lstrcat(path,L"\\");
	lstrcat(path,username);
	CreateDirectory(path,NULL);
	return TRUE;
}


//保存发送邮件
BOOL CSendMailManager::SaveMailFile(LPWSTR filename,LPWSTR sub,LPWSTR to, LPWSTR cc, LPWSTR sta, LPWSTR content)
{
	
//write file;
	HANDLE fhand = CreateFile(filename,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,
				FILE_ATTRIBUTE_ARCHIVE,NULL);

	DWORD nres;
	BOOL res;
	SetFilePointer(fhand,0,NULL,FILE_BEGIN);
	

	res = WriteFile(fhand,to,lstrlen(to)*2,&nres,NULL);
	res = WriteFile(fhand,L"\n",2,&nres,NULL);


	res = WriteFile(fhand,sub,lstrlen(sub)*2,&nres,NULL);
	res = WriteFile(fhand,L"\n",2,&nres,NULL);

//
	res = WriteFile(fhand,content,lstrlen(content)*2,&nres,NULL);
	CloseHandle(fhand);
	return TRUE;
}

BOOL CSendMailManager::GenerateFileName(CSMailImf &mail, LPWSTR username)
{
	TCHAR   forder[30];
	LoadString(g_hInst,IDS_STRING_APPDATAPATH,mail.m_file,100);
	LoadString(g_hInst,IDS_STRING_SENDFORDER,forder,30);

	lstrcat(mail.m_file,L"\\");
	lstrcat(mail.m_file,forder);
	lstrcat(mail.m_file,L"\\");
	lstrcat(mail.m_file,username);
	lstrcat(mail.m_file,L"\\");

	TCHAR buffer[80];
	SYSTEMTIME time;
	GetSystemTime(&time);
	TCHAR t[] = L"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.";
	TCHAR   a[7];
	for(int i = 0;i < 7;++i)
	{
		a[i] = t[Random()%37];
	}
	wsprintf(buffer,L"%d%c%d%c%d%c%d%c%d%c%d%c.smail",
	         time.wYear,a[0],time.wMonth,a[1],time.wDay,a[2],
			 time.wHour,a[3],time.wMinute,a[4],time.wSecond,a[5],time.wMilliseconds,a[6]);
	
	lstrcat(mail.m_file,buffer);
	return TRUE;
}


BOOL CSendMailManager::ReadSMailFile(LPWSTR filename,LPWSTR imf,int maxcount)
{
	DWORD nread;
	HANDLE h = CreateFile(filename,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL);
	SetFilePointer(h,0,NULL,FILE_BEGIN);
	ReadFile(h,imf,maxcount*2,&nread,NULL);
	CloseHandle(h);
	return TRUE;
}

// imf must be a heap memory 
BOOL CSendMailManager::SendMail(char* imf, int len,LPWSTR name,SYSTEMTIME& time)
{
	CeSmtp *smtp = new CeSmtp;
	int start[3],i,count,nto;
	CharTransform trans;

	count = 0;
	start[0] = 0;
	for(i = 0;i < len;++i)
	{
		if(imf[i] == '\n')
		{
			count++;
			start[count] = i+1;
			imf[i] = 0;
			if(count == 2)
				break;
		}
	}

//得到所有收件人地址
	nto = 0;
	for(i = start[0];i < len&&imf[i] != 0;++i)
	{
		if((i == 0||imf[i-1] == ' ')&&imf[i]!=' ')
		{
			nto++;
		}
	}
	if(nto == 0)
		return FALSE;
	Address* ladto = new Address[nto];
	int begin;
	count = 0;
	for(i = start[0];i < len&&imf[i] != 0;++i)
	{
		if(imf[i]!=' ')
		{
			if((i == 0||imf[i-1] == ' '))
			{
				begin = i;
			}
			if(i+1 >= len||imf[i+1]==0||imf[i+1]==' ')
			{
				ladto[count].m_address = new char[i - begin + 1 + 1];
				if(ladto[count].m_address != NULL)
				{
					memcpy(ladto[count].m_address,imf+begin,sizeof(char)*(i-begin+1));
				}
				count++;
			}
		}
	}
	
//set mail sub
	char *sub = new char[MAIL_SUBJECTLENTH];
	strcpy(sub,imf + start[1]);

//Set mail Content	
	smtp->AllocTextBuffer(imf + start[2],len - start[2]);
	delete []imf;

//Get user information;
	userData user; 
	char* useraddress,*password,*servername,*username;
	useraddress = password = servername = NULL;
	g_puserDataDB->GetUserInfo(name,user);
	useraddress = trans.TCharToChar(name);
	password = trans.TCharToChar(user.pass_mail);
	servername = trans.TCharToChar(user.smtp_name);
	username = trans.TCharToChar(user.user_name);
	smtp->SetUserImf(username,password,useraddress);

	BOOL res1,res2,res3;

	res1 = smtp->Connect(servername,25);

	if(res1)
		res2 = smtp->SendMessage(sub,ladto,nto);

	if(res1)
		res3 = smtp->DisConnect();

	smtp->FreeTextBuffer();
	time = smtp->m_time;
	delete []sub;
	delete []useraddress;
	delete []password;
	delete []servername;
	delete []username;
	delete smtp;
	delete []ladto;
	return (res1&&res2&&res3);
}

BOOL CSendMailManager::ClearMailFile(LPWSTR username)
{
	
	TCHAR	path[100];
	TCHAR   forder[30];
	LoadString(g_hInst,IDS_STRING_APPDATAPATH,path,100);
	LoadString(g_hInst,IDS_STRING_SENDFORDER,forder,30);

	lstrcat(path,L"\\");
	lstrcat(path,forder);


	lstrcat(path,L"\\");
	lstrcat(path,username);
	
	return DeleteDirectory(path);
}

BOOL CSendMailManager::DeleteDirectory(LPWSTR name)
{
	TCHAR*	path = new TCHAR[120];
	
	lstrcpy(path,name);
	lstrcat(path,L"\\*.*");

	WIN32_FIND_DATA fd;
	HANDLE hFind;
	hFind = FindFirstFile (path, &fd);
	if (hFind != INVALID_HANDLE_VALUE) 
	{
		do 
		{
			lstrcpy(path,name);
			lstrcat(path,L"\\");
			lstrcat(path,fd.cFileName);
			if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) 
			{
				DeleteDirectory(path);
				RemoveDirectory(path);
			}
			else
				DeleteFile(path);

		}while (FindNextFile (hFind, &fd));

		FindClose (hFind);
	}	
	delete []path;

	return TRUE;
}

⌨️ 快捷键说明

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