Files
Work/pop/SCRAPS.TXT
2024-08-07 09:16:27 -04:00

436 lines
16 KiB
Plaintext

// BOOL helo(const String &domainName);
// BOOL mail(const String &reversePath);
// BOOL rcpt(const String &forwardPath);
// BOOL data(const Block<String> &mailData);
// BOOL verify(const String &forwardPath);
// BOOL expand(const String &mailList);
// BOOL send(const String &reversePath);
// BOOL sendOrMail(const String &reversePath);
// BOOL sendAndMail(const String &reversePath);
// BOOL help(const String &commandName=String());
// BOOL noop(void);
// BOOL reset(void);
// BOOL turn(void);
// BOOL quit(void);
BOOL SMTPClient::helo(const String &domainName)
{
String controlData;
Block<String> responseLines;
if(!mSMTPControl.isConnected()||domainName.isNull())return FALSE;
controlData=mSMTPCmds[Helo];
controlData+=mSpace;
controlData+=domainName;
if(!putControlData(controlData,FALSE))return FALSE;
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckHelo))return FALSE;
return TRUE;
}
BOOL SMTPClient::quit(void)
{
String controlData;
Block<String> responseLines;
if(!mSMTPControl.isConnected())return FALSE;
controlData=mSMTPCmds[Quit];
if(!putControlData(controlData,FALSE))return FALSE;
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckQuit))return FALSE;
return TRUE;
}
BOOL SMTPClient::mail(const String &reversePath)
{
String controlData;
Block<String> responseLines;
if(!mSMTPControl.isConnected()||reversePath.isNull())return FALSE;
controlData=mSMTPCmds[Mail];
controlData+=mSpace;
controlData+=mSMTPCmds[From];
controlData+=reversePath;
if(!putControlData(controlData,FALSE))return FALSE;
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckMail))return FALSE;
return TRUE;
}
BOOL SMTPClient::rcpt(const String &forwardPath)
{
String controlData;
Block<String> responseLines;
if(!mSMTPControl.isConnected()||forwardPath.isNull())return FALSE;
controlData=mSMTPCmds[Recipient];
controlData+=mSpace;
controlData+=mSMTPCmds[To];
controlData+=forwardPath;
if(!putControlData(controlData,FALSE))return FALSE;
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckRecipient))return FALSE;
return TRUE;
}
BOOL SMTPClient::data(const Block<String> &mailData)
{
String controlData;
Block<String> responseLines;
if(!mSMTPControl.isConnected()||!mailData.size())return FALSE;
controlData=mSMTPCmds[Data];
if(!putControlData(controlData,FALSE))return FALSE;
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckData))return FALSE;
for(int lineIndex=0;lineIndex<mailData.size();lineIndex++)mSMTPControl.send(((Block<String>&)mailData)[lineIndex]);
mSMTPControl.send(".");
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckData))return FALSE;
return TRUE;
}
BOOL SMTPClient::verify(const String &forwardPath)
{
String controlData;
Block<String> responseLines;
if(!mSMTPControl.isConnected()||forwardPath.isNull())return FALSE;
controlData=mSMTPCmds[Verify];
controlData+=mSpace;
controlData+=forwardPath;
if(!putControlData(controlData,FALSE))return FALSE;
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckVerify))return FALSE;
return TRUE;
}
BOOL SMTPClient::expand(const String &mailList)
{
String controlData;
Block<String> responseLines;
if(!mSMTPControl.isConnected()||mailList.isNull())return FALSE;
controlData=mSMTPCmds[Verify];
controlData+=mSpace;
controlData+=mailList;
if(!putControlData(controlData,FALSE))return FALSE;
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckExpand))return FALSE;
return TRUE;
}
BOOL SMTPClient::send(const String &reversePath)
{
String controlData;
Block<String> responseLines;
if(!mSMTPControl.isConnected()||reversePath.isNull())return FALSE;
controlData=mSMTPCmds[Send];
controlData+=mSpace;
controlData+=mSMTPCmds[From];
controlData+=reversePath;
if(!putControlData(controlData,FALSE))return FALSE;
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckSend))return FALSE;
return TRUE;
}
BOOL SMTPClient::sendOrMail(const String &reversePath)
{
String controlData;
Block<String> responseLines;
if(!mSMTPControl.isConnected()||reversePath.isNull())return FALSE;
controlData=mSMTPCmds[SendOrMail];
controlData+=mSpace;
controlData+=mSMTPCmds[From];
controlData+=reversePath;
if(!putControlData(controlData,FALSE))return FALSE;
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckSendOrMail))return FALSE;
return TRUE;
}
BOOL SMTPClient::sendAndMail(const String &reversePath)
{
String controlData;
Block<String> responseLines;
if(!mSMTPControl.isConnected()||reversePath.isNull())return FALSE;
controlData=mSMTPCmds[SendAndMail];
controlData+=mSpace;
controlData+=mSMTPCmds[From];
controlData+=reversePath;
if(!putControlData(controlData,FALSE))return FALSE;
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckSendAndMail))return FALSE;
return TRUE;
}
BOOL SMTPClient::reset(void)
{
String controlData;
Block<String> responseLines;
if(!mSMTPControl.isConnected())return FALSE;
controlData=mSMTPCmds[Reset];
if(!putControlData(controlData,FALSE))return FALSE;
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckReset))return FALSE;
return TRUE;
}
BOOL SMTPClient::help(const String &commandName)
{
String controlData;
Block<String> responseLines;
if(!mSMTPControl.isConnected())return FALSE;
controlData=mSMTPCmds[Help];
if(!commandName.isNull())
{
controlData+=mSpace;
controlData+=commandName;
}
if(!putControlData(controlData,FALSE))return FALSE;
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckHelp))return FALSE;
return TRUE;
}
BOOL SMTPClient::noop(void)
{
String controlData;
Block<String> responseLines;
if(!mSMTPControl.isConnected())return FALSE;
controlData=mSMTPCmds[Noop];
if(!putControlData(controlData,FALSE))return FALSE;
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckNoop))return FALSE;
return TRUE;
}
BOOL SMTPClient::turn(void)
{
String controlData;
Block<String> responseLines;
if(!mSMTPControl.isConnected())return FALSE;
controlData=mSMTPCmds[Turn];
if(!putControlData(controlData,FALSE))return FALSE;
if(!mSMTPControl.receive(responseLines))return FALSE;
message(responseLines);
if(!responseLines.size()||!isInResponse(responseLines.size()>1?responseLines[0].betweenString(0,'-'):responseLines[0].betweenString(0,' '),SMTPResponse::AckTurn))return FALSE;
return TRUE;
}
// BOOL isInResponse(const String &responseString,SMTPResponse::RspType responseType);
//inline
//BOOL SMTPClient::isInResponse(const String &responseString,SMTPResponse::RspType responseType)
//{
// return mSMTPResponse.isInResponse(responseString,responseType);
//}
void POPDlg::retrieveMail(void)
{
POPClient popClient;
ServerReg serverReg;
WORD messages;
WORD octets;
mMailBlock.remove();
if(!handleLoginParams(serverReg))return;
if(!popClient.open(serverReg.serverName()))return;
if(!popClient.authenticate(serverReg.userName(),serverReg.password()))
{
popClient.quit();
popClient.close();
return;
}
popClient.stat(messages,octets);
if(!messages)::MessageBox(*this,(LPSTR)"No Messages On Server",(LPSTR)"MAIL",MB_OK);
// sendMessage(ListBox,WM_SETREDRAW,FALSE,0L);
// sendMessage(ListBox,LB_RESETCONTENT,0,0L);
for(int msgIndex=1;msgIndex<=messages;msgIndex++)
{
mMailBlock.insert(&Block<String>());
Block<String> &msgLines=mMailBlock[mMailBlock.size()-1];
popClient.retrieve(msgIndex,msgLines);
if(!msgLines.size())continue;
// for(int msgLine=0;msgLine<msgLines.size();msgLine++)
// {
// if(msgLines[msgLine].strstr("From:"))sendMessage(ListBox,LB_ADDSTRING,0,(LPARAM)(LPSTR)msgLines[msgLine]);
// }
// popClient.top(msgLines,msgIndex);
// if(!msgLines.size())continue;
// for(int msgLine=0;msgLine<msgLines.size();msgLine++)
// {
// if(msgLines[msgLine].strstr("From:"))sendMessage(ListBox,LB_ADDSTRING,0,(LPARAM)(LPSTR)msgLines[msgLine]);
// }
}
// sendMessage(ListBox,WM_SETREDRAW,TRUE,0L);
// for(int msgIndex=1;msgIndex<=messages;msgIndex++)popClient.retrieve(msgIndex,msgLines);
popClient.quit();
popClient.close();
}
CallbackData::ReturnType POPDlg::mouseMoveHandler(CallbackData &someCallbackData)
{
if(!mIsInDrag)return (CallbackData::ReturnType)FALSE;
PureDevice displayDevice(*this);
mDragSprite.setDevice(displayDevice);
mDragSprite.moveSprite(Point(someCallbackData.loWord(),someCallbackData.hiWord()));
// if(!mImageList.dragMove(GDIPoint(someCallbackData.loWord(),someCallbackData.hiWord())))::OutputDebugString("DragMove Failed\n");
// if(!ImageList_DragMove(someCallbackData.loWord(),someCallbackData.hiWord()))::OutputDebugString("ImageList_DragMove failed\n");
// ::OutputDebugString("MouseMove\n");
// PureDevice displayDevice(*this);
// Point cursorPoint(someCallbackData.loWord(),someCallbackData.hiWord());
// cursorPoint.x(cursorPoint.x()-mRelPoint.x());
// cursorPoint.y(cursorPoint.y()-mRelPoint.y());
// cursorPoint.x(mItemRect.left());
// cursorPoint.y(mItemRect.top());
// mImageList.drawImage(displayDevice,cursorPoint,0,ImageList::DrawOverlayMask);
// enum DrawFlag{DrawNormal=ILD_NORMAL,DrawTransparent=ILD_TRANSPARENT,DrawMask=ILD_MASK,
// DrawImage=ILD_IMAGE,DrawBlend25=ILD_BLEND25,DrawBlend50=ILD_BLEND50,
// DrawOverlayMask=ILD_OVERLAYMASK};
return (CallbackData::ReturnType)FALSE;
}
CallbackData::ReturnType POPDlg::leftButtonUpHandler(CallbackData &/*someCallbackData*/)
{
if(!mIsInDrag)return (CallbackData::ReturnType)FALSE;
// mImageList.endDrag();
// ImageList_EndDrag();
::ReleaseCapture();
::ShowCursor(TRUE);
mIsInDrag=FALSE;
return (CallbackData::ReturnType)FALSE;
}
#include <pop/drgsprt.hpp>
CallbackData::ReturnType POPDlg::mailBeginDragHandler(CallbackData &someCallbackData)
{
mIsInDrag=TRUE;
TreeViewMessageHeader &treeViewMessageHeader=*((TreeViewMessageHeader*)someCallbackData.lParam());
mImageList=mMailTree->createDragImage(treeViewMessageHeader.itemNew().item());
PureDevice displayDevice(*this);
ImageInfo imageInfo;
mImageList.imageInfo(0,imageInfo);
mDragSprite.setDevice(displayDevice);
mDragSprite.setBitmap(imageInfo.colorBitmap());
//DragSprite dragSprite(imageInfo.colorBitmap());
// dragSprite.moveSprite(treeViewMessageHeader.pointDrag());
Point movePoint(treeViewMessageHeader.pointDrag().x(),treeViewMessageHeader.pointDrag().y());
mDragSprite.moveSprite(movePoint);
// mMailTree->getItemRect(mItemRect,treeViewMessageHeader.itemNew().item(),FALSE);
// GDIPoint pointDrag(treeViewMessageHeader.pointDrag());
// GDIPoint cursorPos;
// ::GetCursorPos(&((POINT&)cursorPos));
// pointDrag.x(cursorPos.x());
// pointDrag.y(cursorPos.y());
// ImageList_DragEnter(NULL,pointDrag.x(),pointDrag.y());
// if(!mImageList.beginDrag(0,pointDrag))::OutputDebugString("BeginDrag Failed.\n");
// if(!mImageList.beginDrag(0,GDIPoint()))::OutputDebugString("BeginDrag Failed.\n");
::ShowCursor(FALSE);
::SetCapture(*this);
return (CallbackData::ReturnType)FALSE;
}
// mMailTree->getItemRect(mItemRect,treeViewMessageHeader.itemNew().item(),FALSE);
// mMailTree->getItemRect(mItemRect,treeViewMessageHeader.itemNew().item(),FALSE);
// GDIPoint pointDrag(treeViewMessageHeader.pointDrag());
// GDIPoint cursorPos;
// ::GetCursorPos(&((POINT&)cursorPos));
// pointDrag.x(cursorPos.x());
// pointDrag.y(cursorPos.y());
// ImageList_DragEnter(NULL,pointDrag.x(),pointDrag.y());
// if(!mImageList.beginDrag(0,pointDrag))::OutputDebugString("BeginDrag Failed.\n");
// if(!mImageList.beginDrag(0,GDIPoint()))::OutputDebugString("BeginDrag Failed.\n");
#if 0
ImageInfo imageInfo;
mImageList.imageInfo(0,imageInfo);
mDragSprite.setDevice(displayDevice);
mDragSprite.setBitmap(imageInfo.colorBitmap());
mMailTree->getItemRect(mItemRect,treeViewMessageHeader.itemNew().item(),TRUE);
Point movePoint(mItemRect.left(),mItemRect.top());
mDragSprite.moveSprite(movePoint);
#endif
#if 0
PureDevice displayDevice(*this);
PureDevice memDevice(displayDevice);
PureBitmap pureBitmap(imageInfo.colorBitmap());
PureBitmap pureList(processInstance(),"LIST");
PureBitmap pureBitmap(pureList);
memDevice.select((GDIObj)pureBitmap);
Rect dstRect(0,0,pureBitmap.width(),pureBitmap.height());
Point srcPoint(0,0);
if(!displayDevice.bitBlt(dstRect,memDevice,srcPoint))::OutputDebugString("BitBlt failed/n");
#endif
// BITMAP bmBitmap;
// memDevice.select(imageInfo.colorBitmap());
// ::GetObject(imageInfo.maskBitmap(),sizeof(BITMAP),(LPSTR)&bmBitmap);
// Rect dstRect(0,0,bmBitmap.bmWidthBytes,bmBitmap.bmHeight);
// Rect dstRect(0,0,pureBitmap.widthBytes(),pureBitmap.height());
// BITMAP bm;
// HDC hDC=::GetDC(*this);
// HDC hMemDC=::CreateCompatibleDC(hDC);
// HBITMAP hBitmap(imageInfo.colorBitmap());
// PureBitmap hBitmap(processInstance(),"LIST");
// ::GetObject(hBitmap,sizeof(BITMAP),(LPSTR)&bm);
// ::SelectObject(hMemDC,hBitmap);
// ::BitBlt(hDC,0,0,bm.bmWidth,bm.bmHeight,hMemDC,0,0,SRCCOPY);
// ::BitBlt(hDC,0,0,hBitmap.width(),hBitmap.height(),hMemDC,0,0,SRCCOPY);
// ::ReleaseDC(*this,hDC);
// ::DeleteDC(hMemDC);
// if(!mBitmapScratch.isOkay())mBitmapScratch=new PureBitmap();
// mMailTree->getItemRect(mItemRect,treeViewMessageHeader.itemNew().item(),FALSE);
// mImageList.imageInfo(0,imageInfo);
// mImageList.drawImage(pureDevice,Point(),0);
#if 0
TreeViewMessageHeader &treeViewMessageHeader=*((TreeViewMessageHeader*)someCallbackData.lParam());
NM_TREEVIEW *pNMHeader=(NM_TREEVIEW*)&treeViewMessageHeader;
#endif