diff options
| author | Sam Varshavchik | 2013-08-19 16:39:41 -0400 | 
|---|---|---|
| committer | Sam Varshavchik | 2013-08-25 14:43:51 -0400 | 
| commit | 9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch) | |
| tree | 7a81a04cb51efb078ee350859a64be2ebc6b8813 /libmail/smapsendfolder.C | |
| parent | a9520698b770168d1f33d6301463bb70a19655ec (diff) | |
| download | courier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2 | |
Initial checkin
Imported from subversion report, converted to git. Updated all paths in
scripts and makefiles, reflecting the new directory hierarchy.
Diffstat (limited to 'libmail/smapsendfolder.C')
| -rw-r--r-- | libmail/smapsendfolder.C | 222 | 
1 files changed, 222 insertions, 0 deletions
| diff --git a/libmail/smapsendfolder.C b/libmail/smapsendfolder.C new file mode 100644 index 0000000..10d6915 --- /dev/null +++ b/libmail/smapsendfolder.C @@ -0,0 +1,222 @@ +/* +** Copyright 2003, Double Precision Inc. +** +** See COPYING for distribution information. +*/ +#include "smapsendfolder.H" +#include "smapaddmessage.H" +#include <errno.h> +#include <cstring> + +using namespace std; + +mail::smapSendFolder::smapSendFolder(mail::imap *imap, +				     const smtpInfo &sendInfoArg, +				     std::string sentPathArg) +	: folder(imap), imapAccount(imap), sendInfo(sendInfoArg), +	  sentPath(sentPathArg) +{ +} + +mail::smapSendFolder::~smapSendFolder() +{ +} + +void mail::smapSendFolder::sameServerAsHelperFunc() const +{ +} + +string mail::smapSendFolder::getName() const +{ +	return ""; +} + +string mail::smapSendFolder::getPath() const +{ +	return ""; +} + +bool mail::smapSendFolder::hasMessages() const +{ +	return true; +} + +bool mail::smapSendFolder::hasSubFolders() const +{ +	return false; +} + +bool mail::smapSendFolder::isParentOf(string path) const +{ +	return false; +} + +void mail::smapSendFolder::hasMessages(bool arg) +{ +} + +void mail::smapSendFolder::hasSubFolders(bool arg) +{ +} + +void mail::smapSendFolder::readFolderInfo( callback::folderInfo +					   &callback1, +					   callback &callback2) const +{ +	callback1.success(); +	callback2.success("OK"); +} + +void mail::smapSendFolder::getParentFolder(callback::folderList &callback1, +					   callback &callback2) const +{ +	callback2.fail("Not implemented"); +} + +void mail::smapSendFolder::readSubFolders( callback::folderList &callback1, +					   callback &callback2) const +{ +	callback2.fail("Not implemented"); +} + + +mail::addMessage *mail::smapSendFolder::addMessage(callback &callback) const +{ +	if (isDestroyed(callback)) +		return NULL; + +	mail::smapAddMessage *add=new smapAddMessage(*imapAccount, callback); + +	if (!add) +	{ +		callback.fail(strerror(errno)); +		return NULL; +	} + +	try { +		if (sentPath.find('\n') != std::string::npos || +		    sendInfo.sender.find('\n') != std::string::npos) +		{ +			mail::smapAddMessage *p=add; + +			add=NULL; + +			p->fail("Invalid sender address."); +			return NULL; +		} + +		if (sentPath.size() > 0) +			mail::imap::addSmapFolderCmd(add, sentPath); + +		add->cmds.push_back("ADD " + +				    mail::imap::quoteSMAP("MAILFROM=" +							  + sendInfo.sender) +				    + "\n"); +		vector<string>::const_iterator b=sendInfo.recipients.begin(), +			e=sendInfo.recipients.end(); + +		while (b != e) +		{ +			if ( (*b).find('\n') != std::string::npos) +			{ +				mail::smapAddMessage *p=add; + +				add=NULL; + +				p->fail("Invalid recipient address."); +				return NULL; +			} + +			add->cmds.push_back("ADD " + +					    mail::imap::quoteSMAP("RCPTTO=" +								  + *b) +					    + "\n"); +			b++; +		} + +		map<string, string>::const_iterator optPtr; + +		for (optPtr=sendInfo.options.begin(); +		     optPtr != sendInfo.options.end(); optPtr++) +		{ + +			if (optPtr->second.find('\n') != +			    std::string::npos) +			{ +				mail::smapAddMessage *p=add; + +				add=NULL; +				p->fail("Invalid option."); +				return NULL; +			} +		} + +		optPtr=sendInfo.options.find("DSN"); + +		if (optPtr != sendInfo.options.end()) +		{ +			add->cmds.push_back("ADD " + +					    mail::imap::quoteSMAP("NOTIFY=" +								  + optPtr +								  ->second) +					    + "\n"); +		} +	} catch (...) { +		if (add) +		{ +			delete add; +			add=NULL; +		} +	} +	return add; +} + +void mail::smapSendFolder::createSubFolder(string name, bool isDirectory, +					   callback::folderList +					   &callback1, +					   callback &callback2) const +{ +	callback2.fail("Not implemented"); +} + + +void mail::smapSendFolder::create(bool isDirectory, +				  callback &callback) const +{ +	callback.fail("Not implemented"); +} + +void mail::smapSendFolder::destroy(callback &callback, bool destroyDir) const +{ +	callback.fail("Not implemented"); +} + +void mail::smapSendFolder::renameFolder(const folder *newParent, string newName, +					callback::folderList &callback1, +					callback &callback2) const +{ +	callback2.fail("Not implemented"); +} + +mail::folder *mail::smapSendFolder::clone() const +{ +	if (isDestroyed()) +	{ +		errno=ENOENT; +		return NULL; +	} + +	return new smapSendFolder(imapAccount, sendInfo, sentPath); +} + +string mail::smapSendFolder::toString() const +{ +	return ""; +} + +void mail::smapSendFolder::open(callback &openCallback, +				snapshot *restoreSnapshot, +				callback::folder &folderCallback) const +{ +	openCallback.fail("Not implemented"); +} | 
