Patch level : 12.0 484

Files correlati     : 
Commento            : 
- Aggiunta funzione per mandare email da powershell, crea uno script con una funzione e i valori da spedire e lo esegue.
- Modificata funzione xvt_fsys_file_exists, ritrorna true se non ho trovato errori o non ho l'accesso al file (potrebbe essere anche bloccato)

git-svn-id: svn://10.65.10.50/branches/R_10_00@24221 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
mtollari 2017-11-30 15:47:58 +00:00
parent c7ac784ed6
commit 3f16b0615d
3 changed files with 98 additions and 1 deletions

View File

@ -3855,7 +3855,9 @@ BOOLEAN xvt_fsys_dir_exists(const char *pathname)
BOOLEAN xvt_fsys_file_exists(const char *pathname)
{
return xvt_fsys_access(pathname, 0) == 0;
int err = xvt_fsys_access(pathname, 0);
// Ritorno true se non ho trovato errori o non ho l'accesso al file (potrebbe essere anche bloccato)
return err == 0 || err == EACCES;
}
BOOLEAN xvt_fsys_mkdir(const char *pathname)

View File

@ -552,8 +552,12 @@ XVTDLL void xvt_treelist_set_node_images(WINDOW win, XVT_TREEVIEW_N
XVTDLL void xvt_treelist_set_node_string(WINDOW win, XVT_TREEVIEW_NODE node, const char* text);
XVTDLL void xvt_treelist_suspend(WINDOW win);
// Send email using normal methods
XVTDLL BOOLEAN xvt_mail_send(const char* to, const char* cc, const char* ccn,
const char* subject, const char* msg, const char* attach, short flags); // 0x1=UI; 0x2=Receipt
// Send email using Microsoft Powershell
XVTDLL BOOLEAN xvt_powermail_send(const char* to, const char* cc, const char* ccn,
const char* subject, const char* msg, const char* attach, short flags, const char* usr); // 0x1=UI; 0x2=Receipt
XVTDLL short xvt_mail_installed();
XVTDLL void xvt_btn_set_images(WINDOW win, XVT_IMAGE up, XVT_IMAGE down);

View File

@ -278,4 +278,95 @@ BOOLEAN xvt_mail_send(const char* to, const char* cc, const char* ccn,
}
return ok;
}
BOOLEAN xvt_powermail_send(const char* to, const char* cc, const char* ccn,
const char* subject, const char* msg,
const char* attach, short flags, const char* usr)
{
wxString server, port, user, password, from;
// Controllo che Windows sia almeno 8 e che riesca a ricevere i parametri E-mail
if(xvt_sys_get_os_version() < XVT_WS_WIN_8 || !GetMailParams(server, port, user, password, from))
xvt_mail_send(to, cc, ccn, subject, msg, attach, flags);
DIRECTORY tmp; xvt_fsys_get_temp_dir(&tmp);
// Per togliere il rischio di sovrapposizioni vado nella cartella dell'utente
wxString userTemp; userTemp << tmp.path << "\\" << usr;
wxString powerFile;
static int powerNumber = 0;
wxString powerName = "powermail_"; powerName << ++powerNumber;
xvt_fsys_build_pathname(powerFile.GetWriteBuf(_MAX_PATH), NULL, userTemp, powerName, "ps1", NULL);
powerFile.UngetWriteBuf();
// Creo il file
wxFile file(powerFile, wxFile::write);
// Hard code and no play makes Tolla a dull programmer
file.Write("$Server = \""); file.Write(server); file.Write("\";\n");
wxStringTokenizer portTok(port, " ");
file.Write("$Port = \""); file.Write(portTok.GetNextToken()); file.Write("\";\n");
file.Write("$SSL = ");
if(portTok.GetNextToken().Upper() == "-SSL")
file.Write("$true");
else
file.Write("$false");
file.Write("\n");
file.Write("$Username = \""); file.Write(user); file.Write("\";\n");
file.Write("$Password = \""); file.Write(password); file.Write("\";\n");
file.Write("$From = \""); file.Write(from); file.Write("\";\n");
file.Write("$To = \""); file.Write(to); file.Write("\";\n");
file.Write("$Subject = \""); file.Write(subject); file.Write("\";\n");
file.Write("$Body = \""); file.Write(msg); file.Write("\";\n");
file.Write(
"$message = new-object Net.Mail.MailMessage;\n"
"$message.From = $From\n"
"$message.To.Add($To);\n"
#ifndef DBG
"$message.Bcc.Add($From);\n"
#endif
"$message.Subject = $Subject;\n"
"$message.Body = $Body;\n"
);
// Aggiungo a schiena gli allegati
if (attach && *attach)
{
wxStringTokenizer tokAttach(attach, _T(";"));
int i = 0;
while (tokAttach.HasMoreTokens())
{
wxString attachmentLine;
attachmentLine << "$attach" << ++i << "= New-Object Net.Mail.Attachment(\""
<< tokAttach.GetNextToken() << "\");\n" << "$message.Attachments.Add("
<< "$attach" << i << ");\n";
file.Write(attachmentLine);
}
}
file.Write(
"$smtp = new-object Net.Mail.SmtpClient($Server, $Port);\n"
"$smtp.EnableSSL = $SSL;\n"
"$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);\n"
"$exitCode = 1\n"
"try\n"
"{\n"
" $smtp.send($message);\n"
" write-host \"E-Mail sent\" ; \n"
" exit 1\n"
"}\n"
"catch\n"
"{\n"
" write-host \"E-Mail not sent\" ; \n"
" $exitCode = 0\n"
"}\n"
"$host.SetShouldExit($exitCode);\n"
);
file.Close();
wxString command;
command << "PowerShell -NonInteractive -NoProfile -Command \"& {"<< powerFile <<"; exit $LastExitCode }\"";
int exitCode = system(command);
return exitCode;
}