Probleme Envoi Email - TIdSMTP -
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:
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:
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:
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 ? :P
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 :king: