// BOOL helo(const String &domainName); // BOOL mail(const String &reversePath); // BOOL rcpt(const String &forwardPath); // BOOL data(const Block &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 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 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 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 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 &mailData) { String controlData; Block 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)[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 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 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 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 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 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 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 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 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 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()); Block &msgLines=mMailBlock[mMailBlock.size()-1]; popClient.retrieve(msgIndex,msgLines); if(!msgLines.size())continue; // for(int msgLine=0;msgLine 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