LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

Any CVI -> MS Exchange or SMTP mail examples

I am looking for an interface to e-mail messages to a cell phone provider to automatically call (page) people to problems. I see an example for outlook 97 and 2000 are available but I can only use MS Exchange. I was told that an SMTP interface would be sufficient. Any suggestions or sample code?
0 Kudos
Message 1 of 4
(3,591 Views)
Hello.
My English is very bad , I am going to answer your cuestion in spanish.

Te comento que efectivamente puedes usar el fp de outlook 97 o 2000 pero presenta los siguientes inconvenientes:
* Solo es verdaderamente funcional si el equipo que usas lo tienes conectado aun servidor de tu empresa que es el encargado de enviar verdaderamente el correo a traves de un proxy.
* El objeto fp de CVI presenta fallos , no vas poder descargarlo y suelo fallar bastante a menudo , por propia experiencia no te lo recomiendo.

Si te recomiendo en cambio que hagas lo siguiente , ya lo he hecho y funciona perfectamente.Usando funciones del API de Windows de CVI realiza primero una conexion a el servidor smtp de tu proveedor de correo , para ello analiza las funcione
s de uso Del RasDlg del API , no es excesivamente complicado , una vez realizada la conexion enviar un mail es lo mas sencillo del mundo basta con que pongas la siguiente linea de codigo:

INET_SendMail(SERVIDOR_SMTP ,TuDireccionCorreo,DireccionCorreoDestinatario,TitulodelMensaje,CuerpoDelMensaje,Ficheros a anexionar);

Para ello evidentemente debes tener el FP de internet de CVI .

Una vez enviado el mail cuelgas el moden y ya esta .

Si estas interesado enviame un mail a Siabevef@teleline.es
0 Kudos
Message 2 of 4
(3,591 Views)
TZAJ,

It is possible to send e-mail through an SMTP interface using LabWindows/CVI. To do this you will need the Internet Connectivity Toolset. This add on package comes with SMTP samples that you should easily be able to adapt to your system.

The spanish answer starts to cover the basic function calls to send e-mail. In English, you only need to use the INET_SendMail function:

INET_SendMail (char *server, char *from, char *to, char *subject, char *
messageText, char *attachments);

For more information on the Internet Connectivity Toolset, see
http://sine.ni.com/apps/we/nioc.vp?cid=1419〈=US

The Internet Connectivity Toolset is now a part of the LabWindows/CVI Enterprise Connectivity Toolset so you will get some additional toolsets in the p
ackage for the same price as the Internet Toolset used to cost individually!

Good luck,
Shannon R.
Applications Engineer
National Instruments
Message 3 of 4
(3,591 Views)
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
0 Kudos
Message 4 of 4
(3,591 Views)