📄 csendmailmanager.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 + -