1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
bool EnvoieMail(TForm* Fiche,InfosMail Infos,TStrings* Body,bool Date)
{
TIdSMTP* SMTP = new TIdSMTP(Fiche);//composant d'envoi de données
TIdMessage* Message = new TIdMessage(Fiche);//composant de gestion du message
Message->CharSet = "iso-8859-1";
if (Date)//si insertion de date
{
AnsiString DatePost = "Posté le " + Now().DateString() + " à "+ Now().TimeString();//création de la ligne date
Message->Body->Add(DatePost);//ajout au message
}
for (int i = 0;i < Body->Count;i++)//parcours des lignes du message
Message->Body->Add(Body->Strings[i]);//ajout de la ligne
Message->ContentType = "text/plain";//type de texte
Message->From->Text = Infos.Source;//ajout adresse origine
Message->Recipients->EMailAddresses = Infos.Cible;//ajout adresse cible
Message->Subject = Infos.Sujet;//ajout sujet
TIdAttachment* Attache = NULL;
if (Infos.Joint.Length() != 0)//si piece jointe
{
Message->ContentType = "multipart/mixed";//type de message
Attache = new TIdAttachment(Message->MessageParts,Infos.Joint);//ajout de la pièce jointe
}
SMTP->Host = Infos.SMTP; //adresse de l'hote
SMTP->Port = 25;//port SMTP
if (Infos.Pass.Length() != 0 && Infos.Login.Length() != 0)//si présence donnée log et pass
{
SMTP->UserId = Infos.Login;//ajout login
SMTP->Password = Infos.Pass;//ajout pass
SMTP->AuthenticationType = atLogin;//identification
}
else
SMTP->AuthenticationType = atNone;//pas d'identification
if (SMTP->AuthenticationType == atLogin)//si identification
{
if (!SMTP->Authenticate())//si identification ratée
{
if (Attache != NULL)
delete Attache;
delete Message;
delete SMTP;
return false;//erreur
}
}
SMTP->Connect();//connection
if (SMTP->Connected())//si connection OK
SMTP->Send(Message);//envoie mail
else//sinon
{
if (Attache != NULL)
delete Attache;
delete Message;
delete SMTP;
return false;//erreur
}
if (Attache != NULL)
delete Attache;
delete Message;
delete SMTP;
return true; //sortie OK
} |
Partager