Patch level : 12.00 1310

Files correlati     : xvaga.dll
Commento            :

349170 : L'invio per posta dalle stampe non chiedeva più il destinatario
This commit is contained in:
Alessandro Bonazzi 2023-11-30 02:45:41 +01:00
parent 78a546519f
commit b1e17b3e5b

View File

@ -73,6 +73,7 @@ short xvt_mail_installed()
if (xvt_fsys_file_exists("servers/mailsend.exe") || has_power_mail()) if (xvt_fsys_file_exists("servers/mailsend.exe") || has_power_mail())
{ {
wxString smtp, port, user, pass, from; wxString smtp, port, user, pass, from;
GetMailParams(smtp, port, user, pass, from); GetMailParams(smtp, port, user, pass, from);
if (!pass.IsEmpty() && smtp != "MAPI") if (!pass.IsEmpty() && smtp != "MAPI")
bInstalled |= 0x2; bInstalled |= 0x2;
@ -115,17 +116,73 @@ static void AppendAttachment(wxString& cmd, const wxString& fname, bool att = tr
} }
} }
///////////////////////////////////////////////////////////
// wxEmailDlg
///////////////////////////////////////////////////////////
class wxEmailDlg : public wxDialog
{
protected:
wxTextCtrl* AddString(wxSizer* ctlSizer, int id, const char* label, wxString* str);
public:
wxString _strEmail;
wxEmailDlg();
};
wxTextCtrl* wxEmailDlg::AddString(wxSizer* ctlSizer, int id, const char* label, wxString* str)
{
wxStaticText* lbl = new wxStaticText(this, wxID_ANY, label);
const int k = 20, b = k / 10;
wxTextCtrl* txt = new wxTextCtrl(this, id, wxEmptyString, wxDefaultPosition, wxSize(20 * k, k),
0, wxTextValidator(wxFILTER_ASCII, str));
ctlSizer->Add(lbl, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL, b);
ctlSizer->Add(txt, 1, wxALIGN_LEFT | wxALL, b);
return txt;
}
wxEmailDlg::wxEmailDlg() : wxDialog(NULL, wxID_ANY, "Email",
wxDefaultPosition, wxDefaultSize,
wxDEFAULT_DIALOG_STYLE)
{
wxSizer* ctlTextSizer = new wxFlexGridSizer(4, 2, 8, 8);
AddString(ctlTextSizer, 1001, "Destinatario", &_strEmail);
wxSizer* ctlButtonSizer = CreateButtonSizer(wxOK | wxCANCEL);
wxBoxSizer* ctlTopSizer = new wxBoxSizer(wxVERTICAL);
ctlTopSizer->Add(ctlTextSizer, 0, wxALIGN_CENTER);
ctlTopSizer->Add(ctlButtonSizer, 0, wxALIGN_CENTER);
SetSizer(ctlTopSizer);
ctlTopSizer->SetSizeHints(this);
}
BOOLEAN xvt_mail_send(const char* to, const char* cc, const char* ccn, BOOLEAN xvt_mail_send(const char* to, const char* cc, const char* ccn,
const char* subject, const char* msg, const char* subject, const char* msg,
const char* attach, short flags) const char* attach, short flags)
{ {
bool ui = (flags & 0x1) != 0; const short mail_inst = xvt_mail_installed();
wxString server, port, user, password, from;
bool mailsend = (mail_inst & 0x2) && GetMailParams(server, port, user, password, from);
bool ui = mailsend && ((flags & 0x1) != 0);
wxString str_to(to);
wxStringTokenizer tokTo(to, _T(";")); if (ui)
{
wxEmailDlg dlg;
dlg._strEmail = str_to;
if (dlg.ShowModal() == wxID_OK)
str_to = dlg._strEmail;
}
wxStringTokenizer tokTo(str_to, _T(";"));
wxMailMessage Msg(subject, tokTo.GetNextToken(), msg); wxMailMessage Msg(subject, tokTo.GetNextToken(), msg);
Msg.m_query_receipt = flags & 0x2; Msg.m_query_receipt = flags & 0x2;
while (tokTo.HasMoreTokens()) while (tokTo.HasMoreTokens())
Msg.AddTo(tokTo.GetNextToken()); Msg.AddTo(tokTo.GetNextToken());
@ -155,13 +212,10 @@ BOOLEAN xvt_mail_send(const char* to, const char* cc, const char* ccn,
while (Tok.HasMoreTokens()) while (Tok.HasMoreTokens())
Msg.AddBcc(Tok.GetNextToken()); Msg.AddBcc(Tok.GetNextToken());
} }
const short mail_inst = xvt_mail_installed();
BOOLEAN ok = FALSE; BOOLEAN ok = FALSE;
wxString server, port, user, password, from; if (mailsend)
if ((mail_inst & 0x2) && GetMailParams(server, port, user, password, from))
{ {
wxString cmd = "servers/mailsend.exe"; wxString cmd = "servers/mailsend.exe";
AppendQuotedString(cmd, "smtp", server); AppendQuotedString(cmd, "smtp", server);
@ -280,7 +334,8 @@ BOOLEAN xvt_mail_send(const char* to, const char* cc, const char* ccn,
delete [] buff; delete [] buff;
} }
} }
} else }
else
if (mail_inst & 1) if (mail_inst & 1)
{ {
xvt_fsys_save_dir(); xvt_fsys_save_dir();
@ -319,11 +374,24 @@ BOOLEAN xvt_powermail_send(const char* to, const char* cc, const char* ccn,
const char* attach, short flags, const char* usr) const char* attach, short flags, const char* usr)
{ {
wxString server, port, user, password, from; wxString server, port, user, password, from;
// Controllo che Windows sia almeno 8 e che riesca a ricevere i parametri E-mail // Controllo che Windows sia almeno 8 e che riesca a ricevere i parametri E-mail
if(xvt_sys_get_os_version() < XVT_WS_WIN_7 || !GetMailParams(server, port, user, password, from)) if(xvt_sys_get_os_version() < XVT_WS_WIN_7 || !GetMailParams(server, port, user, password, from))
xvt_mail_send(to, cc, ccn, subject, msg, attach, flags); xvt_mail_send(to, cc, ccn, subject, msg, attach, flags);
wxString str_to(to);
if ((flags & 0x1) != 0)
{
wxEmailDlg dlg;
dlg._strEmail = str_to;
if (dlg.ShowModal() == wxID_OK)
str_to = dlg._strEmail;
}
DIRECTORY tmp; xvt_fsys_get_temp_dir(&tmp); DIRECTORY tmp; xvt_fsys_get_temp_dir(&tmp);
// Per togliere il rischio di sovrapposizioni vado nella cartella dell'utente // Per togliere il rischio di sovrapposizioni vado nella cartella dell'utente
wxString userTemp; userTemp << tmp.path << "\\" << usr; wxString userTemp; userTemp << tmp.path << "\\" << usr;
@ -372,7 +440,7 @@ BOOLEAN xvt_powermail_send(const char* to, const char* cc, const char* ccn,
file.Write("$Username = \""); file.Write(user); file.Write("\"\n"); file.Write("$Username = \""); file.Write(user); file.Write("\"\n");
file.Write("$Password = \""); file.Write(password); file.Write("\"\n"); file.Write("$Password = \""); file.Write(password); file.Write("\"\n");
file.Write("$From = \""); file.Write(from); file.Write("\"\n"); file.Write("$From = \""); file.Write(from); file.Write("\"\n");
wxString str_to(to);
buildPSArray(str_to); buildPSArray(str_to);
file.Write("$To = "); file.Write(str_to); file.Write("\n"); file.Write("$To = "); file.Write(str_to); file.Write("\n");