119 lines
3.1 KiB
C++
119 lines
3.1 KiB
C++
#include <smtp/mailreg.hpp>
|
|
#include <common/string.hpp>
|
|
#include <common/block.hpp>
|
|
#include <common/stdio.hpp>
|
|
|
|
BOOL MailReg::getRecipients(Block<String> &recipients)
|
|
{
|
|
DWORD itemIndex(0);
|
|
RegKey regKey;
|
|
String recipient;
|
|
|
|
recipients.remove();
|
|
if(!regKey.openKey(STRING_MAILRECIPIENTSKEYNAME))return FALSE;
|
|
while(regKey.enumValue(itemIndex++,String(STRING_RECIPIENTS),recipient))recipients.insert(&recipient);
|
|
return (recipients.size()?TRUE:FALSE);
|
|
}
|
|
|
|
void MailReg::setRecipients(const Block<String> &recipients)
|
|
{
|
|
String namePrefix;
|
|
RegKey regKey;
|
|
|
|
if(!regKey.openKey(STRING_MAILRECIPIENTSKEYNAME))
|
|
{
|
|
regKey.createKey(STRING_MAILRECIPIENTSKEYNAME,"");
|
|
regKey.openKey(STRING_MAILRECIPIENTSKEYNAME);
|
|
}
|
|
for(int lineIndex=0;lineIndex<recipients.size();lineIndex++)
|
|
{
|
|
::sprintf(namePrefix,"R%02d",lineIndex);
|
|
regKey.setValue(namePrefix,String(((Block<String>&)recipients)[lineIndex]));
|
|
}
|
|
}
|
|
|
|
BOOL MailReg::addRecipient(const String &recipient)
|
|
{
|
|
Block<String> recipients;
|
|
String namePrefix;
|
|
RegKey regKey;
|
|
|
|
if(recipient.isNull())return FALSE;
|
|
getRecipients(recipients);
|
|
if(isInBlock(recipient,recipients)){setRecipients(recipients);return FALSE;}
|
|
::sprintf(namePrefix,"R%02d",recipients.size());
|
|
if(!regKey.openKey(STRING_MAILRECIPIENTSKEYNAME))
|
|
{
|
|
regKey.createKey(STRING_MAILRECIPIENTSKEYNAME,"");
|
|
regKey.openKey(STRING_MAILRECIPIENTSKEYNAME);
|
|
}
|
|
regKey.setValue(namePrefix,recipient);
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL MailReg::getReversePaths(Block<String> &reversePaths)
|
|
{
|
|
DWORD itemIndex(0);
|
|
RegKey regKey;
|
|
String reversePath;
|
|
|
|
reversePaths.remove();
|
|
if(!regKey.openKey(STRING_MAILREVERSEPATHKEYNAME))return FALSE;
|
|
while(regKey.enumValue(itemIndex++,String(STRING_REVERSEPATH),reversePath))reversePaths.insert(&reversePath);
|
|
return (reversePaths.size()?TRUE:FALSE);
|
|
}
|
|
|
|
void MailReg::setReversePaths(const Block<String> &reversePaths)
|
|
{
|
|
String namePrefix;
|
|
RegKey regKey;
|
|
|
|
if(!regKey.openKey(STRING_MAILREVERSEPATHKEYNAME))
|
|
{
|
|
regKey.createKey(STRING_MAILREVERSEPATHKEYNAME,"");
|
|
regKey.openKey(STRING_MAILREVERSEPATHKEYNAME);
|
|
}
|
|
for(int lineIndex=0;lineIndex<reversePaths.size();lineIndex++)
|
|
{
|
|
::sprintf(namePrefix,"R%02d",lineIndex);
|
|
regKey.setValue(namePrefix,String(((Block<String>&)reversePaths)[lineIndex]));
|
|
}
|
|
}
|
|
|
|
BOOL MailReg::addReversePath(const String &reversePath)
|
|
{
|
|
Block<String> reversePaths;
|
|
String namePrefix;
|
|
RegKey regKey;
|
|
|
|
if(reversePath.isNull())return FALSE;
|
|
getReversePaths(reversePaths);
|
|
if(isInBlock(reversePath,reversePaths)){setReversePaths(reversePaths);return FALSE;}
|
|
::sprintf(namePrefix,"R%02d",reversePaths.size());
|
|
if(!regKey.openKey(STRING_MAILREVERSEPATHKEYNAME))
|
|
{
|
|
regKey.createKey(STRING_MAILREVERSEPATHKEYNAME,"");
|
|
regKey.openKey(STRING_MAILREVERSEPATHKEYNAME);
|
|
}
|
|
regKey.setValue(namePrefix,reversePath);
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL MailReg::isInBlock(const String &string,Block<String> &strings)
|
|
{
|
|
for(int itemIndex=0;itemIndex<strings.size();itemIndex++)
|
|
{
|
|
if(string==strings[itemIndex])
|
|
{
|
|
if(itemIndex)
|
|
{
|
|
String currTop=strings[0];
|
|
strings[0]=string;
|
|
strings[itemIndex]=currTop;
|
|
}
|
|
return TRUE;
|
|
}
|
|
}
|
|
return FALSE;
|
|
}
|