quisiera que me dijeran como hacer un programa que me envie dato a un hotmail

Iniciado por batist07, 7 Septiembre 2013, 03:32 AM

0 Miembros y 1 Visitante están viendo este tema.

batist07

saludos amigo, sino es mucha molestia, me gustaría que me dijeran como hacer un programa en c++ que me envié datos al hotmail...... :D

Alien-Z

Más datos hombre, ¿usas una librería específica (WinAPI, QT, wxWidgets...) o vas a ejecutar guiones shell...?, ¿multiplataforma o para un SO específico?.

Si estás buscando una opinión general te recomiendo QT. Aquí un ejemplo para envíar e-mails:

smtp.h:
Código (cpp) [Seleccionar]
   /****************************************************************************
   ** $Id: qt/smtp.h 3.3.6 edited Aug 31 2005 $
   **
   ** Copyright (C) 1992-2005 Trolltech AS. All rights reserved.
   **
   ** This file is part of an example program for Qt. This example
   ** program may be used, distributed and modified without limitation.
   **
   *****************************************************************************/
   
   #ifndef SMTP_H
   #define SMTP_H
   
   #include <QTcpSocket>
   #include <QString>
   #include <QTextStream>
   #include <QDebug>
   #include <QMessageBox>
   
   class Smtp : public QObject
   {
   Q_OBJECT
   
   
   public:
   Smtp( const QString &from, const QString &to,
   const QString &subject, const QString &body );
   ~Smtp();
   
   signals:
   void status( const QString &);
   
   private slots:
   void stateChanged(QTcpSocket::SocketState socketState);
   void errorReceived(QTcpSocket::SocketError socketError);
   void disconnected();
   void connected();
   void readyRead();
   
   private:
   QString message;
   QTextStream *t;
   QTcpSocket *socket;
   QString from;
   QString rcpt;
   QString response;
   enum states{Rcpt,Mail,Data,Init,Body,Quit,Close};
   int state;
   
   };
   #endif


stmp.cpp:
Código (cpp) [Seleccionar]
   #include "smtp.h"
   
   Smtp::Smtp( const QString &from, const QString &to, const QString &subject, const QString &body )
   {
   socket = new QTcpSocket( this );
   
   connect( socket, SIGNAL( readyRead() ), this, SLOT( readyRead() ) );
   connect( socket, SIGNAL( connected() ), this, SLOT( connected() ) );
   connect( socket, SIGNAL(error(SocketError)), this,
   SLOT(errorReceived(SocketError)));
   connect( socket, SIGNAL(stateChanged( SocketState)), this,
   SLOT(stateChanged(SocketState)));
   connect(socket, SIGNAL(disconnectedFromHost()), this,
   SLOT(disconnected()));;
   
   message = "To: " + to + "\n";
   message.append("From: " + from + "\n");
   message.append("Subject: " + subject + "\n");
   message.append(body);
   message.replace( QString::fromLatin1( "\n" ), QString::fromLatin1( "\r\n" ) );
   message.replace( QString::fromLatin1( "\r\n.\r\n" ),
   QString::fromLatin1( "\r\n..\r\n" ) );
   this->from = from;
   rcpt = to;
   state = Init;
   socket->connectToHost( "smtp.yourserver.com", 25);
   if(socket->waitForConnected ( 30000 )) {qDebug("connected"); }
   
   t = new QTextStream( socket );
   }
   Smtp::~Smtp()
   {
   delete t;
   delete socket;
   }
   void Smtp::stateChanged(QTcpSocket::SocketState socketState)
   {
   
   qDebug() <<"stateChanged " << socketState;
   }
   
   void Smtp::errorReceived(QTcpSocket::SocketError socketError)
   {
   qDebug() << "error " <<socketError;
   }
   
   void Smtp::disconnected()
   {
   
   qDebug() <<"disconneted";
   qDebug() << "error " << socket->errorString();
   }
   
   void Smtp::connected()
   {
   output->append("connected");
   qDebug() << "Connected ";
   }
   
   void Smtp::readyRead()
   {
   
   qDebug() <<"readyRead";
   // SMTP is line-oriented
   
   QString responseLine;
   do
   {
   responseLine = socket->readLine();
   response += responseLine;
   }
   while ( socket->canReadLine() && responseLine[3] != ' ' );
   
   responseLine.truncate( 3 );
   
   
   if ( state == Init && responseLine[0] == '2' )
   {
   // banner was okay, let's go on
   
   *t << "HELO there\r\n";
   t->flush();
   
   state = Mail;
   }
   else if ( state == Mail && responseLine[0] == '2' )
   {
   // HELO response was okay (well, it has to be)
   
   *t << "MAIL FROM: " << from << "\r\n";
   t->flush();
   state = Rcpt;
   }
   else if ( state == Rcpt && responseLine[0] == '2' )
   {
   
   *t << "RCPT TO: " << rcpt << "\r\n"; //r
   t->flush();
   state = Data;
   }
   else if ( state == Data && responseLine[0] == '2' )
   {
   
   *t << "DATA\r\n";
   t->flush();
   state = Body;
   }
   else if ( state == Body && responseLine[0] == '3' )
   {
   
   *t << message << "\r\n.\r\n";
   t->flush();
   state = Quit;
   }
   else if ( state == Quit && responseLine[0] == '2' )
   {
   
   *t << "QUIT\r\n";
   t->flush();
   // here, we just close.
   state = Close;
   emit status( tr( "Message sent" ) );
   }
   else if ( state == Close )
   {
   deleteLater();
   return;
   }
   else
   {
   // something broke.
   QMessageBox::warning( 0, tr( "Qt Mail Example" ), tr( "Unexpected reply from SMTP server:\n\n" ) + response );
   state = Close;
   }
   response = "";
   }


Invocación:
Código (cpp) [Seleccionar]
   Smtp *newMail = new Smtp("from@address.com","to@address.com"," Your Subject","My body text");
   delete newMail;


Fuente: http://www.qtcentre.org/threads/2221-Sending-email-using-Qt

Saludos.

eferion

Notas con respecto al envío de correos a hotmail, gmail, etc desde "servidores de correos propios".

Si el dominio del correo que vas a utilizar como remitente o la dirección del servidor de correo que vas a usar para enviar el correo no están registradas en hotmail puede que tengas problemas para que el correo le llegue al destinatario.

El problema viene por los filtros que usan hotmail, gmail y demás frente a dominios desconocidos.

El ejemplo que te ha puesto Alien-Z es para montar un sencillo servidor de correo.

roilivethelife

Sino hay otra manera más efectiva, entrar a tu correo usando el protocolo POP3 y enviar un email desde tu correo.
Y puedes enviarte un correo a ti mismo si quieres que te quede en bandeja de entrada.

El codigo seguro que lo tienes por la red(google ;D), y va a ser mucho más sencillo simple,y menos problemas.

Salu2!