Dev - C++ - Utilizar Blat para mandar un e-mail

 
Vista:
Imágen de perfil de vito

Utilizar Blat para mandar un e-mail

Publicado por vito (3 intervenciones) el 04/10/2015 21:22:12
Hola! Estoy intentando usar Blat para poder mandar e-mails. Hace poco me encontre con este codigo:

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 <iostream>
#include <windows.h>
#include <cstdio>
#include "blatdll.h"
 
using namespace std;
 
int main()
{
    char cad[128];
    ULONG err;
    char nombre[2][256];
    char remiteCorreo[64];
    char servidorCorreo[64];
    char usuarioCorreo[64];
    char passwordCorreo[64];
    char asuntomsg[256];
    char textomsg[1024];
    char cmdline[4096];
    char szTo[64];
    char szCc[64];
    char szCo[64];
 
    strcpy(remiteCorreo, "<usuario@servidor>");
    strcpy(servidorCorreo, "<servidor.de.correo>");
    strcpy(usuarioCorreo, "<usuariodecorrreo>");
    strcpy(passwordCorreo, "<contraseña>");
    sprintf(nombre[0], ".\\main.cpp");  // Ruta de acceso del 1er fichero
    sprintf(nombre[1], ".\\blatdll.h"); // Ruta de acceso del 2º fichero
 
    sprintf(asuntomsg, "mensaje enviado usando Blat");
    sprintf(textomsg, "Cuerpo del mensaje.\nRealizando prueba.\n-- \nConClase\n");
 
    sprintf(cmdline, "-body \"%s\" -q -f %s -server %s -u %s -pw %s -attach %s,%s -base64 -subject \"%s\"",
            textomsg, remiteCorreo, servidorCorreo, usuarioCorreo, passwordCorreo, nombre[0], nombre[1], asuntomsg);
    cout << cmdline << endl;
 
    // Añadir direcciones To:
    strcpy(szTo, " -to <direccion_destino>");
    strcat(cmdline, szTo);
 
    strcpy(szCc, " -cc <direccion_copia>");
    strcat(cmdline, szCc);
 
    strcpy(szCo, " -bcc <direccion_copia_oculta>");
    strcat(cmdline, szCo);
 
    err = Send(cmdline);
    switch(err) {
         case 0:
             sprintf(cad, "Mensaje enviado");
             break;
         case 1:
             sprintf(cad, "Error de conexión o dirección de destino erronea.");
             break;
         case 2:
             sprintf(cad, "Conexión denegada o dirección de remite erronea.");
             break;
         default:
             sprintf(cad, "Error %ld", err);
             break;
    }
    cout << cad << endl;
    if(err) return -1;
 
    return 0;
}

pero cuando lo compilo (estoy usando Code::Blocks compilando con GNU GCC) me tira este error en la linea 48 "C:\Users\Vito\Desktop\prueba\VPrincipal.cpp error: cannot convert 'char*' to 'LPCTSTR {aka const wchar_t*}' for argument '1' to 'int Send(LPCTSTR)'| .

La funcion que usa Blat para mandar se llama Send y usa este parametro Send(LPCTSTR sCmd). La verdad no se como funciona bien LPCTSTR como para pasarle el tipo de parametro que necesita. Si alguien me puede ayudar se lo agradeceria. :)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de vito

Utilizar Blat para mandar un e-mail

Publicado por vito (3 intervenciones) el 04/10/2015 21:46:38
Lo que probe hacer es esto: Send ((LPCTSTR)cmdline); y ahora no me tira el error ese de "cannot convert 'char*' to..".. Sino que me tira este error : "undefined reference to `Send@4'" :S . Si saben de algo me lo hacen saber:) . Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Utilizar Blat para mandar un e-mail

Publicado por Hector (45 intervenciones) el 05/10/2015 03:06:20
ese LPCTSTR pertenece a la librería windows.h, significa "long pointer to a const tchar string" por lo que puedes decir que es un puntero de tipo const char hecho para funcionar con windows, con hacer el casting o crear una variable de tipo LPCTSTR y asignarle la cadena creo que te funcionaria bien.

Sobre el undefined reference, generalmente ocurre cuando hay algún problema con el linkeado, es decir, que no instalaste la librería blat.h correctamente, trata de revisar si te falto algún archivo de la librería por instalar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de vito

Utilizar Blat para mandar un e-mail

Publicado por vito (3 intervenciones) el 05/10/2015 03:30:13
Si, estuve averiguando y seguramente el error "undefined reference to `Send@4" debe ser porque no enlace bien la biblioteca blat al proyecto. Los archivos que trae la biblioteca son blat.dll,blat.exe,blatdll.h y blat.lib que tuve que convertirlo a "libblat.a" porque estuve leyendo que no sirven las librerias estaticas usando el compilador Mingw/GCC. Tengo que familiarizarme mas con el IDE C::B porque antes estaba usando Zinjai pero queria un IDE con mas antiguedad y con una comunidad mas grande. ¿Qué IDE me recomendarias? Desde ya gracias por tu respuesta Hector! Voy a ver si puedo arreglar este error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Utilizar Blat para mandar un e-mail

Publicado por Hector (45 intervenciones) el 05/10/2015 17:25:57
No hay mucha información que te pueda dar amigo, los IDEs que conozco son los que ya todos saben, DEV c++ cuando existen devpacks que eviten tener que instalar las librerías manualmente, CodeBlocks que auto complementa sentencias y posee una variedad de configuraciones predeterminadas, ademas de su comunidad que puede brindar ayuda, y Visual Studio 2010, por algunas librerías que ya tienen sus archivos diseñados para funcionar en este entorno.

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Utilizar Blat para mandar un e-mail

Publicado por Santiago (1 intervención) el 30/11/2015 00:33:43
Yo tengo el mismo error , haz podido solucionarlo ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Utilizar Blat para mandar un e-mail

Publicado por Jorge Pinzon (1 intervención) el 10/01/2018 00:16:02
LIBRARY "blat.dll"
EXPORTS
Blat
BlatA
BlatW
Send@4
SendA
SendW
SetPrintFunc
SetPrintFuncA
SetPrintFuncW
SetProcessDataProc
SetProcessDataProcW
cSend
cSendA
cSendW

Utilice este archivo .def y lo convierte en .a como lo muestra en este link https://blogconclase.wordpress.com/2013/04/26/crear-librerias-a-a-partir-de-librerias-lib/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar