#include "wxinc.h"
#include "xvt.h"

#include "msg.h"
#include "email.h"
#include <wx/tokenzr.h>

BOOLEAN xvt_mail_send(const char* to, const char* cc, const char* ccn,
                      const char* subject, const char* msg, 
                      const char* attach, BOOLEAN ui)
{  
  wxStringTokenizer tokTo(to, _T(";"));
	wxMailMessage Msg(subject, tokTo.GetNextToken(), msg);

	while (tokTo.HasMoreTokens())
		Msg.AddTo(tokTo.GetNextToken());
  if (Msg.m_to[0].IsEmpty()) 
  {
    Msg.m_to[0] = " "; // Il destinatario "" fa piantare MAPI con errore 25
    ui = TRUE;         // Forza user interface in assenza di recipient
  }

  if (attach && *attach)
  {
    wxStringTokenizer tokAttach(attach, _T(";"));
    while (tokAttach.HasMoreTokens())
		  Msg.AddAttachment(tokAttach.GetNextToken());
  }

  if (cc && *cc)
  {
    wxStringTokenizer Tok(cc, _T(";"));
    while (Tok.HasMoreTokens())
		  Msg.AddCc(Tok.GetNextToken());
  }

  if (ccn && *ccn)
  {
	  wxStringTokenizer Tok(ccn, _T(";"));
    while (Tok.HasMoreTokens())
		  Msg.AddBcc(Tok.GetNextToken());
  }
	
  xvt_fsys_save_dir();
  wxEmail Mail;
  BOOLEAN ok = Mail.Send(Msg, wxEmptyString, ui != 0);
  xvt_fsys_restore_dir();

  return ok;
}