Good Morning.
Bueno , Shannon , tienes raz�n , pero hay que hacer una aclaraci�n , la cuesti�n es que para poder usar s�lamente :
INET_SendMail (char *server, char *from, char *to, char *subject, char *
messageText, char *attachments);
Necesitas estar conectado constantemente a tu proveedor de correo electr�nico , cosa que sucede en raras ocasiones , lo l�gico es que te conectes cuando lo necesites a tu proveedor de correo , envies el correo y te desconectes . Toda esta funcionalidad se puede realizar como comente anteriormente usando el API a traves de las funciones del uso del RASDLG ,para ello es interesnate preparar un Acceso telef�nico a redes con los datos de conexi�n de t� proveedor ( Username , Password , DSN ) para lanzar ese acceso y conectarte , envias el mensaje y si configuras el acceso telefonico a redes para que se decuelge al minuto de realizar la conexi�n , no debes hacer nada ya que el wINDOWS se encarga de CORTAR LA COMUNICACI�N , el c�digo podr�a ser aproximadamente as�:
// Estructuras para la conexi�n de
RASDIALDLG struInfo;
RASCONN struRasConn;
RASCONNSTATUS struRasConnStatus;
//----------------------------------------------------------------------------------------------
// Programa principal
//
int main (int argc, char *argv[])
{
// Estado de la conexi�n
RASCONNSTATE Estado;
// Inicializamos la lista de conexiones
InicializarRasDialListaConexiones();
// Inicializamos la comunicaci�n
InicializarRasDialDlg();
//Inicializamos la estructura de estado de la comunicaci�n
InicializarRasDialEstadoConexion();
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if (Dial())
{
//MessagePopup("HOLA","Hecho Dial");
// Comprobamos el estado de la comuniaci�n
if (EstadoConexion(&Estado))
{
// Si el estado es conectado
if (Estado==RASCS_Connected)
{
// Creamos he enviamos el mensaje
EnviarMensaje();
}
}
}
// Cortamos la conexi�n , por ahora no la cortamos ponemos que se corte a los 5 minutos sin actividad
// autom�ticamente
//CortarConexion();
// Descargamos el user interface
QuitUserInterface (0);
return 0;
}
//----------------------------------------------------------------------------------------------
// Me realiza la conexi�n con el host , devuelve True si es correcta y False en caso contraio
//
int Dial(void)
{
DWORD error;
// Realizamos la conexi�n
error = RasDialDlg(NULL,NOMBRE_ACCESO_TELEFONICO_REDES,NULL,&struInfo);
if(error== 0)
{ // Comprobamos si se ha producido un error
return 0;
}
return 1;
}
//----------------------------------------------------------------------------------------------
// Me devuelve el estdo de la conexi�n en el par�metro pasado por referencia
//
int EstadoConexion(RASCONNSTATE *LPEstado)
{
DWORD error;
DWORD lpcb;
DWORD lpcConnections=0;
// Tama�o de la estructura esperada
lpcb=sizeof(RASCONN);
// Obtenemos todas las conexiones existentes
error = RasEnumConnections(&struRasConn, &lpcb, &lpcConnections);
if (error != 0)
{ // error
return 0;
}
// Obtenemos el estado de la conexi�n
if (RasGetConnectStatus(struRasConn.hrasconn,&struRasConnStatus)!=0)
{
return 0;
}
// Devolvemos el estado
*(LPEstado)=struRasConnStatus.rasconnstate;
return 1;
}
//----------------------------------------------------------------------------------------------
// Cortamos la conexi�n sino est� se cortar� autom�ticamente a los 5 minutos
//
int CortarConexion(void)
{
RasHangUp(struRasConn.hrasconn);
return 1;
}
//----------------------------------------------------------------------------------------------
// Inicializamos la estructura de comunicaci�n
//
void InicializarRasDialDlg(void)
{
struInfo.dwSize = sizeof(RASDIALDLG);
struInfo.hwndOwner=0;
struInfo.dwFlags=0;
struInfo.xDlg=0;
struInfo.yDlg=0;
struInfo.dwSubEntry=0;
struInfo.dwError=0;
struInfo.reserved=0;
struInfo.reserved2=0;
}
//----------------------------------------------------------------------------------------------
// Inicializamos la lista de conexiones
//
void InicializarRasDialListaConexiones(void)
{
struRasConn.dwSize = sizeof(RASCONN);
struRasConn.hrasconn=0;
strcpy(struRasConn.szEntryName,"");
strcpy(struRasConn.szDeviceType,"");
strcpy(struRasConn.szDeviceName,"");
}
//----------------------------------------------------------------------------------------------
// Inicializamos el estado de la conexi�n
//
void InicializarRasDialEstadoConexion(void)
{
struRasConnStatus.dwSize = sizeof(RASCONNSTATUS);
struRasConnStatus.rasconnstate=RASCS_OpenPort;
struRasConnStatus.dwError=0;
strcpy(struRasConnStatus.szDeviceType,"");
strcpy(struRasConnStatus.szDeviceName,"");
}
//----------------------------------------------------------------------------------------------
// Me env�a el mensaje pasado por par�metro
//
int EnviarMensaje()
{
static int handleEn=0;
char stringAuxDir[260]="";
int error;
// Creamos el correo electr�nico y lo enviamos
//Enviamos el nuevo mensaje
error = INET_SendMail(SERVIDOR_SMTP ,DIRECCION_CORREO,Mensaje Direccion,Mensaje Titulo,Mensaje Cuerpo,Fichero a nexionar);
if (error<0)
{
// MessagePopup("HOLA","Error primero");
return 0;
}
}
}
return 1;
}
Goodbye
Tximiskurdi