mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
65 lines
1.9 KiB
C++
65 lines
1.9 KiB
C++
#include "PrepareEmailTask.h"
|
|
#include "../lib/Profiler.h"
|
|
#include "../ServerConfig.h"
|
|
#include "../SingletonManager/ErrorManager.h"
|
|
|
|
#include "Poco/Net/SSLException.h"
|
|
|
|
PrepareEmailTask::PrepareEmailTask(UniLib::controller::CPUSheduler* cpuScheduler)
|
|
: UniLib::controller::CPUTask(cpuScheduler), mMailClientSession(nullptr)
|
|
{
|
|
|
|
}
|
|
|
|
PrepareEmailTask::~PrepareEmailTask()
|
|
{
|
|
if (mMailClientSession) {
|
|
delete mMailClientSession;
|
|
}
|
|
}
|
|
|
|
int PrepareEmailTask::run()
|
|
{
|
|
if (ServerConfig::g_disableEmail) return 0;
|
|
Profiler timeUsed;
|
|
mMailClientSession = new Poco::Net::SecureSMTPClientSession(ServerConfig::g_EmailAccount.url, ServerConfig::g_EmailAccount.port);
|
|
mMailClientSession->login();
|
|
try {
|
|
mMailClientSession->startTLS(ServerConfig::g_SSL_CLient_Context);
|
|
mMailClientSession->login(Poco::Net::SMTPClientSession::AUTH_LOGIN, ServerConfig::g_EmailAccount.username, ServerConfig::g_EmailAccount.password);
|
|
} catch(Poco::Net::SSLException& ex) {
|
|
printf("[PrepareEmailTask] ssl certificate error: %s\nPlease make sure you have cacert.pem (CA/root certificates) next to binary from https://curl.haxx.se/docs/caextract.html\n", ex.displayText().data());
|
|
return -1;
|
|
}
|
|
|
|
//printf("[PrepareEmailTask] time: %s\n", timeUsed.string().data());
|
|
/*
|
|
session.login();
|
|
session.startTLS(pContext);
|
|
if (!username.empty())
|
|
{
|
|
session.login(SMTPClientSession::AUTH_LOGIN, username, password);
|
|
}
|
|
session.sendMessage(message);
|
|
session.close();
|
|
*/
|
|
|
|
return 0;
|
|
}
|
|
|
|
int PrepareEmailTask::send(Poco::Net::MailMessage* message)
|
|
{
|
|
if (ServerConfig::g_disableEmail) return 0;
|
|
|
|
auto er = ErrorManager::getInstance();
|
|
try {
|
|
mMailClientSession->sendMessage(*message);
|
|
mMailClientSession->close();
|
|
}
|
|
catch (Poco::Exception& exc) {
|
|
er->addError(new ParamError("PrepareEmailTask::send", "error sending email", exc.displayText().data()));
|
|
printf("[PrepareEmailTask::%s] error sending email: %s\n", __FUNCTION__, exc.displayText().data());
|
|
return -1;
|
|
}
|
|
return 0;
|
|
} |