mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
64 lines
1.7 KiB
C++
64 lines
1.7 KiB
C++
#include "SendEmailTask.h"
|
|
#include "PrepareEmailTask.h"
|
|
#include "../lib/Profiler.h"
|
|
#include "../SingletonManager/ErrorManager.h"
|
|
#include "../SingletonManager/EmailManager.h"
|
|
#include "../ServerConfig.h"
|
|
|
|
#include "Poco/Net/MediaType.h"
|
|
|
|
SendEmailTask::SendEmailTask(Poco::Net::MailMessage* mailMessage, UniLib::controller::CPUSheduler* cpuScheduler, size_t additionalTaskDependenceCount/* = 0*/)
|
|
: UniLib::controller::CPUTask(cpuScheduler, additionalTaskDependenceCount+1), mMailMessage(mailMessage), mEmail(nullptr)
|
|
{
|
|
}
|
|
|
|
SendEmailTask::SendEmailTask(model::Email*email, UniLib::controller::CPUSheduler* cpuScheduler, size_t additionalTaskDependenceCount/* = 0*/)
|
|
: UniLib::controller::CPUTask(cpuScheduler, additionalTaskDependenceCount), mMailMessage(nullptr), mEmail(email)
|
|
{
|
|
|
|
}
|
|
|
|
SendEmailTask::~SendEmailTask()
|
|
{
|
|
if (mMailMessage) {
|
|
delete mMailMessage;
|
|
mMailMessage = nullptr;
|
|
}
|
|
if (mEmail) {
|
|
delete mEmail;
|
|
mEmail = nullptr;
|
|
}
|
|
|
|
}
|
|
|
|
int SendEmailTask::run()
|
|
{
|
|
if(ServerConfig::g_disableEmail) return 0;
|
|
|
|
Profiler timeUsed;
|
|
auto er = ErrorManager::getInstance();
|
|
auto parent = getParent(0);
|
|
|
|
if (mMailMessage) {
|
|
|
|
if (strcmp(parent->getResourceType(), "PrepareEmailTask") != 0) {
|
|
er->addError(new Error("SendEmailTask", "first parent isn't PrepareEmailTask"));
|
|
er->sendErrorsAsEmail();
|
|
return -1;
|
|
}
|
|
PrepareEmailTask* prepare = (PrepareEmailTask*)&(*parent);
|
|
mMailMessage->setSender(ServerConfig::g_EmailAccount.sender);
|
|
|
|
if (prepare->send(mMailMessage)) {
|
|
er->sendErrorsAsEmail();
|
|
return -1;
|
|
}
|
|
}
|
|
else if (mEmail) {
|
|
auto em = EmailManager::getInstance();
|
|
em->addEmail(mEmail);
|
|
mEmail = nullptr;
|
|
}
|
|
//printf("[SendEmailTask] time: %s\n", timeUsed.string().data());
|
|
return 0;
|
|
} |