Mandar correos desde VC

26/10/2004 - 10:39 por Sergio | Informe spam
Hola lista,
Se pueden mandar correos desde visual c++? Como?
Gracias.

Preguntas similare

Leer las respuestas

#11 Sergio
29/10/2004 - 11:33 | Informe spam
Rodrigo Corral [MVP] wrote:
Te pongo código en VB, supongo que te será facil traducirlo. Sino me
comentas...

' Specify the authentication mechanism
' to use.
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...cate") = _
cdoBasic

' The username for authenticating to an SMTP server using basic (clear-text)
authentication
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...name") = _
""

' The password used to authenticate
' to an SMTP server using authentication
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/co...word") = _
"Password"






Pues a mi hay algo que se me escapa. Hago copy paste del fuente que
estoy usando, quito las direcciones y los datos por lógica.

//##########################################################################

#import "c:\program files\common files\system\ado\msado15.dll" no_namespace
#import <cdosys.dll> no_namespace

#include "cdosysstr.h"
#include "cdosyserr.h"
#include <stdio.h>

void main() {
CoInitialize(NULL);
{
try {
IMessagePtr iMsg(__uuidof(Message));
iMsg->Fields->Item[cdoTo]->Value = _variant_t("");
iMsg->Fields->Item[cdoFrom]->Value = _variant_t("");
iMsg->Fields->Item[cdoSubject]->Value = _variant_t("a test");
iMsg->Fields->Item[cdoTextDescription]->Value = _variant_t("this is a
test");
iMsg->Fields->Item[cdoSMTPServer]->Value = _variant_t("servidor");
iMsg->Fields->Item[cdoSMTPServerPort]->Value = (long)25;
iMsg->Fields->Item[cdoSMTPAccountName]->Value = _variant_t("usuario");
iMsg->Fields->Item[cdoSendEmailAddress]->Value =
_variant_t("");
iMsg->Fields->Item[cdoSMTPAuthenticate]->Value = (long)cdoBasic;
iMsg->Fields->Item[cdoSendUserName]->Value =
_variant_t(""); //He probado tb poniendo solo el nombre
de usuario
iMsg->Fields->Item[cdoSendPassword]->Value = _variant_t("password");
iMsg->Fields->Item[cdoSMTPUseSSL]->Value = _variant_t(VARIANT_FALSE);
iMsg->Fields->Item[cdoSendUsingMethod]->Value = (long)cdoSendUsingPort;
iMsg->Fields->Update();
iMsg->Send();
}
catch( _com_error err) {
printf("%s",(char*)err.Description());
getchar();
}

}
CoUninitialize();
}

//##########################################################################
Respuesta Responder a este mensaje
#12 Rodrigo Corral [MVP]
29/10/2004 - 13:00 | Informe spam
Aunque uses un smtp de terceros tienes que tener corriendo el servio smtp de
IIS en tu maquina local, sino CDO no enviara los correos.

De hecho todas tu pruebas estarán en C:\inetpub\mailroot\Pickup ;)

No pense que era necesario tener el servicio corriendo, pero es así.


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#13 Sergio
29/10/2004 - 13:40 | Informe spam
Rodrigo Corral [MVP] wrote:
Aunque uses un smtp de terceros tienes que tener corriendo el servio smtp de
IIS en tu maquina local, sino CDO no enviara los correos.

De hecho todas tu pruebas estarán en C:\inetpub\mailroot\Pickup ;)

No pense que era necesario tener el servicio corriendo, pero es así.





Y no hay ninguna alternativa para mandar correos sin usar IIS? No puedo
hacer que los usuarios del programa se instalen el IIS.

Por cierto, no tengo la carpeta que me dices.
Respuesta Responder a este mensaje
#14 Rodrigo Corral [MVP]
29/10/2004 - 14:34 | Informe spam
Pues es que no es necesario instalar IIS solo el servicio SMTP y no se van a
enterar.

La otra alternativa es usar MAPI.


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#15 Sergio
29/10/2004 - 17:16 | Informe spam
Así el programa no me da ningún error, y se que intenta enviar el correo
porque el firewall me avisa de que se quiere mandar un correo, pero no
me llega, alguna idea?

######################################################################
#import <cdosys.dll> no_namespace raw_interfaces_only
#import "c:\program files\common files\system\ado\msado15.dll"
no_namespace raw_interfaces_only
#include "cdosysstr.h"
#include "cdosyserr.h"
#include <stdio.h>

void main() {

CoInitialize(NULL);

try {
IMessage* pMsg = NULL;
IBodyPart* pBp = NULL;
IConfiguration* pConfig = NULL;
Fields* pFlds = NULL;
Field* pFld = NULL;
_Stream* pStm = NULL;

HRESULT hr = S_OK;

hr=CoCreateInstance(
__uuidof(Message),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IMessage),
(void**)&pMsg);

pMsg->put_To(_bstr_t("\"Some One\" , \"Another\"
"));
pMsg->put_From(_bstr_t("\"ThirdPerson\" "));
pMsg->put_Sender(_bstr_t(""));
pMsg->put_Subject(_bstr_t("Files for Monday's meeting."));
pMsg->put_TextBody(_bstr_t("Please review the attached files for
Monday's meeting. Thanks. "));


CoCreateInstance(
__uuidof(Configuration),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IConfiguration),
(void**)&pConfig);

pConfig->get_Fields(&pFlds);

pFlds->get_Item(_variant_t(cdoSendUsingMethod),&pFld);
pFld->put_Value(_variant_t((long)cdoSendUsingPort));
pFld->Release();
pFld=NULL;

pFlds->get_Item(_variant_t(cdoSMTPServer),&pFld);
pFld->put_Value(_variant_t("servidor"));
pFld->Release();
pFld=NULL;

pFlds->get_Item(_variant_t(cdoSMTPServerPort),&pFld);
pFld->put_Value(_variant_t((long)25));
pFld->Release();
pFld=NULL;

pFlds->get_Item(_variant_t(cdoSMTPAccountName),&pFld);
pFld->put_Value(_variant_t("usuario")); // 0
pFld->Release();
pFld=NULL;

pFlds->get_Item(_variant_t(cdoSMTPAuthenticate),&pFld);
pFld->put_Value(_variant_t((long)cdoBasic)); // 0
pFld->Release();
pFld=NULL;

pFlds->get_Item(_variant_t(cdoSendUserName),&pFld);
pFld->put_Value(_variant_t(""));
pFld->Release();
pFld=NULL;

pFlds->get_Item(_variant_t(cdoSendPassword),&pFld);
pFld->put_Value(_variant_t("password"));
pFld->Release();
pFld=NULL;


pFlds->Update();
pFlds->Release();
pFlds=NULL;

pMsg->putref_Configuration(pConfig);
pConfig->Release();
pConfig=NULL;

pMsg->GetStream(&pStm);
pStm->SaveToFile(L"c:\\savemymessage.eml",adSaveCreateOverWrite);
//No guarda nada

pMsg->Send();

pStm->Release();
pMsg->Release();
}
catch (_com_error &e) {
printf("%s",e.Description());
getchar();
}

CoUninitialize();
}

######################################################################
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida