Bonjour,

J'utilise le composant TIdSMTP (Indy) pour envoyer un email.

Je rencontre cependant un problème lors de l'envoie (l'email n'arrive pas a destination).

Erreur : 504 Helo Command rejected : need fully qualified domain

Voici le code que j'ai utilisé :

sur le bouton d'envoi du mail :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
void __fastcall TfrmMail::btnEnvoiClick(TObject *Sender)
{
 
        info.Source = edtAdrExpediteur->Text;   //Mail source
        info.Cible  = edtAdrDestinataire->Text; //Mail cible
 
        /////
        info.SMTP   = edtSMTP->Text;       //lien SMTP
        info.Login  = edtLoginSMTP->Text;              //login pour lien SMTP
        info.Pass   = edtPassSMTP->Text;                //pass pour lien SMTP
        /////
 
        info.Sujet  = edtSujet->Text;           //sujet du mail
 
        EnvoieMail(this, info, Memo1 -> Lines, true);
 
}
La fonction d'envoie d'email est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
75
76
77
78
 
bool TfrmMail::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
        {
                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
}
Je recupere le chemin du fichier à joindre sur le clic du bouton parcourir (ouverture d'un open Dialog):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
void __fastcall TfrmMail::btnParcourirClick(TObject *Sender)
{
        if (opnDlg->Execute())
        {
               info.Joint = opnDlg->FileName;  //chemin de la pièce jointe
               edtFicJoint->Text = opnDlg->FileName;
        }
}

Ce code que j'ai récupéré sur ce forum, me semble pourtant bon ...

Quelqu'un aurait une petite idée ?

A noter que j'obtiens cette erreur, lorsque je renseigne ou non les Logins/Pass necessaires au SMTP . Le fait de m'authentifier ne change donc rien !

D'avance merci