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

Bibliothèques Discussion :

[Qxt] Envoyer un email


Sujet :

Bibliothèques

  1. #1
    cedrix57
    Invité(e)
    Par défaut [Qxt] Envoyer un email
    Bonjour,

    Je suis en train de créer un programme de surveillance à partir de webcam. L'objectif c'est d'avoir un programme multiplatforme (pour linux et windows) capable de capturer depuis une caméra une image à intervalle régulier et l'envoyer par email. J'utilise qt et qt mobility 1.2.
    Quelqu'un connaîtrait un bout de code/voir une bibliothèque qui marche sous windows et qui permet d'envoyer des emails avec image?
    J'ai déjà essayé deux trois trucs, donc le module qt messaging de qt mobility qui me paraissait le mieux. Sauf que j'arrive pas à l'installer et le faire marcher sous ubuntu.

    Merci d'avance
    Dernière modification par dourouc05 ; 01/11/2012 à 13h34.

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Au choix, s'interfacer avec une appli courriel (genre netsend...) ou implémenter un protocole tel que smtp?

    Ou encore, effectivement, chercher une bibliothèque de courriel, mais je n'en connais pas.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre averti
    Homme Profil pro
    Informaticien
    Inscrit en
    Juin 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informaticien
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2004
    Messages : 182
    Points : 357
    Points
    357
    Par défaut
    Bonjour,

    peut-être que ceci peut t'intéresser.

    http://www.codeproject.com/Articles/28806/SMTP-Client

  4. #4
    cedrix57
    Invité(e)
    Par défaut
    Merci pour vos réponses.
    Au choix, s'interfacer avec une appli courriel (genre netsend...) ou implémenter un protocole tel que smtp?
    J'aime pas trop réinventer la roue. Et comme il n'y a pas l'air d'avoir beaucoup de truc existant, multiplatforme et fiable ce n'est sûrement pas si simple qu'il y parait.
    Éventuellement je pourrai envoyer des emails en passant par un scipt python. J'en ai un qui marche bien. Mais bon si je pourrai tout faire un C++ ça me parait plus simple à maintenir.

    peut-être que ceci peut t'intéresser.

    http://www.codeproject.com/Articles/28806/SMTP-Client
    Merci il faut que j'y réfléchisse. Ce qui m'embête c'est qu'il y a deux sources différentes pour windows et linux.


    Sinon pour le moment j'ai testé le module network de Qxt. J'ai pas trop trouvé de document. Donc j'ai tenté ça. Mais il ne se passe rien donc je sait pas trop quoi penser. J'ai biensûr ajouté ça dans mon fichier pro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CONFIG += mobility qxt
    QXT     += core gui network
    Extrait de mon cpp:
    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
    #include <QxtMailMessage>
     #include <QxtSmtp>
     
    //---------------------------------------------
    void MainDialog::actionTestSendingEmail(){
        //*
        QString imagePath = "test.jpg";
        QString senderEmail = this->ui->lineEditEmailSender->text();
        QString passwordSender = this->ui->lineEditPassword->text();
        QString receiversString = this->ui->lineEditEmailReceivers->text();
        QStringList receivers = receiversString.split(";");
        QString emailServor = "smtp.gmail.com";
        QxtMailMessage email(senderEmail, senderEmail);
        email.setSubject(tr("test webcam recorder"));
        email.setBody(tr("a test to check all informations are valid"));
        QxtMailAttachment attachment = QxtMailAttachment::fromFile(imagePath);
        email.addAttachment(imagePath, attachment);
        QxtSmtp smtp;
        this->connect(&smtp, SIGNAL(authenticationFailed(QByteArray)), SLOT(authenticationFailed(QByteArray)));
        this->connect(&smtp, SIGNAL(connectionFailed(QByteArray)), SLOT(connectionFailed(QByteArray)));
        this->connect(&smtp, SIGNAL(mailSent(int)), SLOT(mailSent(int)));
        this->connect(&smtp, SIGNAL(mailFailed(int,int,QByteArray)), SLOT(mailFailed(int,int,QByteArray)));
        smtp.setUsername(senderEmail.toAscii());
        smtp.setPassword(passwordSender.toAscii());
        //smtp.connectToSecureHost(emailServor, 465);
        //smtp.connectToSecureHost(emailServor, 587);
        smtp.connectToSecureHost(emailServor, 587);
        //smtp.connectToSecureHost(emailServor);
        //if(stmp.
        int success = smtp.send(email);
        //QMessageBox::critical(this, tr("Erreur"), QString("return:") + success);
     
     
        ///MailSender email(emailServor, senderEmail, receivers, tr("Auto image capture"), tr("Auto image capture"));
        ///email.setLogin(senderEmail, passwordSender);
        ///email.setPort(587);
        ///email.setPort(465);
        ///email.setSsl(true);
        //QStringList attachments(imagePath);
        //email.setAttachments(attachments);
        //email.setPriority(MailSender::high);
        ///if(!email.send()){
            ///QString lastError = email.lastError();
            ///QMessageBox::critical(this, tr("Erreur"), lastError + tr("\nImpossible d'envoyer l'email. Vérifier votre connexion internet et les informations entrées"));
        ///}
        //*/
    }
    //---------------------------------------------
     
    void MainDialog::authenticationFailed(const QByteArray & msg){
       QString lastError = msg;
       QMessageBox::critical(this, tr("Authentication failed"), lastError + tr("\nImpossible d'envoyer l'email. Vérifier votre connexion internet et les informations entrées"));
    }
     
    void MainDialog::connectionFailed(const QByteArray & msg){
       QString lastError = msg;
       QMessageBox::critical(this, tr("Connection failed"), lastError + tr("\nImpossible d'envoyer l'email. Vérifier votre connexion internet et les informations entrées"));
    }
     
    void MainDialog::mailSent(int mailID){
       QMessageBox::information(this, tr("Email envoyé"), tr("L'email a bien été envoyé"));
    }
     
    void MainDialog::mailFailed(int mailID, int errorCode, const QByteArray & msg){
       QString lastError = msg;
       QMessageBox::critical(this, tr("Email failed"), lastError + tr("\nImpossible d'envoyer l'email. Vérifier votre connexion internet et les informations entrées"));
    }

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par cedrix57 Voir le message
    Sinon pour le moment j'ai testé le module network de Qxt. J'ai pas trop trouvé de document. Donc j'ai tenté ça. Mais il ne se passe rien donc je sait pas trop quoi penser.
    Est-ce que tu as vérifié avec tcpdump (ou wireshark) qu'il ne se passait rien ?

    Il peut y avoir plein de raisons différentes au fait qu'il "ne se passe rien"
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  6. #6
    cedrix57
    Invité(e)
    Par défaut
    J'ai trouvé! C'est parce que mon objet smtp était détruit à la fin de la fonction avant que l'email ne soit envoyé.

    Maintenant mon serveur smtp est une variable de classe ça fonctionne! =)

    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
        QString imagePath = "test.jpg";
        QString senderEmail = this->ui->lineEditEmailSender->text();
        QString passwordSender = this->ui->lineEditPassword->text();
        QString receiversString = this->ui->lineEditEmailReceivers->text();
        QStringList receivers = receiversString.split(";");
        QString emailServor = "smtp.gmail.com";
        QxtMailMessage email(senderEmail, senderEmail);
        email.setSubject(tr("test webcam recorder"));
        email.setBody(tr("a test to check all informations are valid"));
        QxtMailAttachment attachment =       QxtMailAttachment::fromFile(imagePath);
        email.addAttachment(imagePath, attachment);
        //QHash<QString,QString> headers;
        //headers.insert("from","the@keeper.com");
        //email.setExtraHeaders(headers);
        smtp.disconnectFromHost();
        smtp.setUsername(senderEmail.toAscii());
        smtp.setPassword(passwordSender.toAscii());
        smtp.connectToSecureHost(emailServor);
        smtp.send(email);

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

Discussions similaires

  1. Script envoyant des emails
    Par pl14 dans le forum Réseau/Web
    Réponses: 10
    Dernier message: 03/05/2006, 16h27
  2. [FPDF] Créer un PDF et l'envoyer par email avec PHPMailer
    Par nico33307 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 12/12/2005, 22h49
  3. Réponses: 4
    Dernier message: 29/09/2005, 18h29
  4. Envoyer un email
    Par Gourouni dans le forum ASP
    Réponses: 7
    Dernier message: 17/01/2005, 16h39
  5. Pb pour envoyer un email
    Par Décibel dans le forum Flash
    Réponses: 2
    Dernier message: 15/11/2003, 09h54

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