IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

idSMTP et envoie de mail avec fichiers


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut idSMTP et envoie de mail avec fichiers
    Bonjour,

    J'essaie d'envoyer un email avec un fichier attaché mais l'email reçu n'est pas correct. En effet, je n'arrive pas à recevoir le fichier attaché. J'ai vérifié dans le source des emails et le fichier est bien reçu mais il n'apparait pas comme fichier attaché ou sinon, il n'a pas son nom. De plus, je n'arrive pas non plus à afficher les accents.le message n'est pas interprété de la même manière suivant le content-type.

    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
    UnicodeString fichier = "C:\\test.txt";
    TIdMessage *mess = new TIdMessage(Form1);
    entete->Text = "<p>Ceci est un mail de test</p><p>Et j'espère que le HTML fonctionne.</p>";
    mess->Clear();
    mess->ClearBody();
    mess->ClearHeader();
    mess->From->Address = Edit15->Text;
    mess->ReplyTo->Add()->Address = Edit15->Text;
    mess->Recipients->Add()->Address = Edit15->Text; // adresse d'envoie
    mess->Subject = "test";
    mess->ContentType = "multipart/alternative";//"multipart/alternative";"multipart/mixed"
    mess->CharSet = "iso-8859-1";//"UTF-16";
     
    //Ici on va créer les différentes parties du message
    //Au cas où le client ne gère pas les messages HTML :
    TIdText *nohtml = new TIdText(mess->MessageParts, entete->Lines);
    nohtml->ContentType = "text/plain";
    nohtml->Body->Insert(0, "Ce message est un message HTML. Configurez votre client de courrier électronique pour le visionner de manière appropriée");
     
    //Ajout du message au format HTML (en supposant que Message contient du HTML) :
    TIdText *avechtml = new TIdText(mess->MessageParts, entete->Lines);
    avechtml->ContentType = "text/html";
    avechtml->CharSet = "iso-8859-1";
    //Et maintenant, l'ajout des pièces jointes :
    //Le tableau de strings Fichiers doit être remplis avec les chemins complets des fichiers à inclure
    TIdAttachmentFile *att = new TIdAttachmentFile(mess->MessageParts, fichier);
    att->FileName = fichier;
    //On passe ensuite à l'envoi du message:
    TIdSMTP *SMTP = new TIdSMTP(NULL) ; //Création dynamique du composant
    SMTP->Port = JvValidateEdit13->Value.VInteger; //Le port SMTP standard...
    SMTP->Host = Edit20->Text;  //Le serveur auquel se connecter
    //Ensuite on se connecte et on envoit le message, en gérant les erreurs, tant qu'à faire !
    try {
        try {
            SMTP->Connect();
            SMTP->Send(mess);
            }
        catch ( ... )
              {
              Application->MessageBox(L"Une erreur est survenue lors de l'envoie de l'email. Le destinataire n'a probablement pas reçu le message.", L"Erreur lors de l'envoie de l'email", MB_OK + MB_ICONSTOP + MB_TOPMOST);
              }
        }
    __finally {
              SMTP->Disconnect();
              delete SMTP;
              delete mess;
              }
    J'ai recherché sur google, sur developpez et sur le forum et je n'arrive pas à comprendre l'erreur.

    Vous avez une idée ?

    J'utilise RADStudio2009 et indy10 (celui qui est livré avec l'ide).

    Merci

  2. #2
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Il y a un exemple installé par défaut avec ta version de BDS écrite en Delphi, notemment un lien dans un fichier texte pour la version C++Builder.

    Contenu du fichier Texte :
    Demo applications for Indy V9 are available from the
    downloads section on the Indy site at:

    http://www.nevrona.com/indy

    As new demos are constantly being built and tested,
    this is the most up to date location for demo
    downloads.

    If you have any problems with demos please join the
    "Indy Demos" group at yahoo groups, and report them
    there:

    http://groups.yahoo.com/group/Indy-Demos/

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    J'ai suivi vos liens et j'ai cru comprendre que c'est un bug d'indy et qu'il fallait le mettre à jour.
    J'ai réussit à le faire avec indytuberion mais maintenant j'ai un autre bug plus inquiétant.
    Le code que j'ai mis plus haut plante sur la fonction d'envoie du message (SMTP->Send(mess);).
    ---------------------------
    TestEmail
    ---------------------------
    Violation d'accès à l'adresse 004CD40C dans le module 'TestEmail.exe'. Lecture de l'adresse 003A003F.
    ---------------------------
    OK
    ---------------------------
    une idée ?

    Merci

  4. #4
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Quel serveur de messagerie tu utilise pour envoyer les emails. Il sagit à 99% d'une mauvaise identification, cad peut être le serveur requiert une authentification sécurisée SSL v1 ou v2, cependant chepas exactement quel type de sécurité tu dois utiliser

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    J'ai réussit.
    J'ai désinstallé proprement indy pour le réinstallé et maintenant je n'ai plus cette erreur.

    Le fait d'avoir mis à jour indy fait que les accents fonctionnent maintenant et les fichiers attachés fonctionnent aussi mais je ne peux pas mettre de message pour les clients ne prenant pas en charge le html.

    Merci.

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Points : 537
    Points
    537
    Par défaut
    Salut Gandf, comment as tu installés la pack ??
    moi j'avais un PB sur le nom de fichier joint, en réinstallant manuellement la package 150 (à la place du 120) le send ne marche plus.. mauvais container..

  7. #7
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    J'ai C++Builder 2009 et delphi 2009. J'ai donc utilisé le numéro 140 et non pas 150.

    De plus, il faut vraiment supprimer tout ce qui a rapport avec indy (dossier windows/system32 et tous les dossiers de codegear) a l'exception des fichiers d'aide.

    En fait, il me semble que j'ai ouvert rad studio et que je l'ai compilé avec delphi et j'ai activé la génération de tous les fichiers c++builder dans les options de liaison.

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Points : 537
    Points
    537
    Par défaut
    j'ai fait cela aussi sauf windows/System32.. mais avec la 150.

    dis voir cela fonctionne pour toi l'envoie d'email via IdSMTP et Idmessage ??, avec pièces jointe aussi ??

  9. #9
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Oui tout cela fonctionne et les accents aussi. Cette mise à jour est indispensable car ces bugs ont été corrigé après la sortie de c++builder 2009 et qu'il n'y a pas de mise à jour automatique pour cette librairie.

    Si tu veux, je vais mettre e soir une partie de mon code parce que je rois que j'ai modifié les content type. Je n'ai pas l'IDE sous la main en ce moment.

  10. #10
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Points : 537
    Points
    537
    Par défaut
    Citation Envoyé par gandf Voir le message
    Oui tout cela fonctionne et les accents aussi. Cette mise à jour est indispensable car ces bugs ont été corrigé après la sortie de c++builder 2009 et qu'il n'y a pas de mise à jour automatique pour cette librairie.

    Si tu veux, je vais mettre e soir une partie de mon code parce que je rois que j'ai modifié les content type. Je n'ai pas l'IDE sous la main en ce moment.
    alors là.. tu es comment dire super sympa, je veux bien..
    j'ai mis une journée à migrer l'application dont 1/2 à comprendre que c'était une anomalie du composent...

  11. #11
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    J'ai mis bien plus longtemps que ça pour comprendre que c'était un bug d'indy

    Que croyais à une mauvaise gestion du content type.

  12. #12
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Tout n'est pas indispensable.

    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
    UnicodeString fichier = "C:\\test.txt";
    TIdMessage *mess = new TIdMessage(Form1);
    UnicodeString temp = "";
    entete->Text = "<p>Ceci est un mail de test</p><p>Et j'espère que le HTML fonctionne.</p>";
    mess->Clear();
    mess->ClearBody();
    mess->ClearHeader();
    mess->From->Address = Edit15->Text;
    mess->ReplyTo->Add()->Address = Edit15->Text;
    mess->Recipients->Add()->Address = Edit15->Text; // adresse d'envoie
    mess->Subject = "test";
    mess->ContentType = "multipart/mixed";//"multipart/alternative";"multipart/mixed"
    mess->CharSet = "iso-8859-1";
     
    //Ajout du message au format HTML (en supposant que Message contient du HTML) :
    TIdText *avechtml = new TIdText(mess->MessageParts, entete->Lines);
    avechtml->ContentType = "text/html";
    avechtml->CharSet = "iso-8859-1";
    //Et maintenant, l'ajout des pièces jointes :
    //Le tableau de strings Fichiers doit être remplis avec les chemins complets des fichiers à inclure
    TIdAttachmentFile *att = new TIdAttachmentFile(mess->MessageParts, fichier);
    att->FileName = fichier;
    //On passe ensuite à l'envoi du message:
    TIdSMTP *SMTP = new TIdSMTP(NULL) ; //Création dynamique du composant
    SMTP->Port = JvValidateEdit13->Value.VInteger; //Le port SMTP standard...
    SMTP->Host = Edit20->Text;  //Le serveur auquel se connecter
    //Ensuite on se connecte et on envoit le message, en gérant les erreurs, tant qu'à faire !
    try {
        try {
            SMTP->Connect();
            SMTP->Send(mess);
            }
        catch ( ... )
              {
              Application->MessageBox(L"Une erreur est survenue lors de l'envoie de l'email. Le destinataire n'a probablement pas reçu le message.", L"Erreur lors de l'envoie de l'email", MB_OK + MB_ICONSTOP + MB_TOPMOST);
              }
        }
    __finally {
              SMTP->Disconnect();
              delete SMTP;
              delete mess;
              }

  13. #13
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Points : 537
    Points
    537
    Par défaut
    merci, en fait la version livrée avec RAD2009 est bien bugguée,
    la dernière 10.5.7 ne fonctinne pas en packge 150, le package 120 non plus (pas tous les composants), la 140 marche bien, sauf ensuite pour certains autes pack installés au préalable comme Intraweb. qui ne voit plus l'ancien package 120..
    je ferais une nouvelles install de intraweb.

    Marche bien et les pièce jointes sont bien nommée.

    Merci pour ton aide..

  14. #14
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Points : 537
    Points
    537
    Par défaut
    Petite Info complémentaire:
    comme avec Indy 140 Intraweb ne fonctionnait plus correctement, j'ai finit par tout ré-installer (BDS2009, puis Indy 120, JVCL, TMS,..) et la ça fonctionne bien.
    C'est donc bien le pack 120 qu'il faut sur la dernière version d'Indy pour BDS2009.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. envois de mail avec fichier attaché
    Par freuh94 dans le forum ASP
    Réponses: 3
    Dernier message: 09/04/2010, 18h35
  2. Envoi de mail avec fichier joint
    Par fred_hte_savoie dans le forum SQL
    Réponses: 3
    Dernier message: 13/11/2009, 16h07
  3. [Forum] Envoi e-mail avec fichier joint
    Par swinia dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 02/05/2009, 01h51
  4. Réponses: 1
    Dernier message: 21/02/2007, 10h49
  5. envoi de mail avec attachement de fichier
    Par GMI3 dans le forum Modules
    Réponses: 2
    Dernier message: 24/09/2003, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo