Muy buen lunes con todos amigos, me preguntaba si podrían ayudarme, intento encontrar la manera de como poder enviar un correo electronico sea a hotmail, Gmail ó Yahoo.
Gracias por su tiempo
Escrito 23 mayo 2016 - 08:18
Muy buen lunes con todos amigos, me preguntaba si podrían ayudarme, intento encontrar la manera de como poder enviar un correo electronico sea a hotmail, Gmail ó Yahoo.
Gracias por su tiempo
Escrito 23 mayo 2016 - 08:54
uses ..., smtpsend,ssl_openssl; //probably other ssl units can be used, too. // MailData is the text of the mail. function SendMail( User, Password, MailFrom, MailTo, SMTPHost, SMTPPort: string; MailData: string): Boolean; var SMTP: TSMTPSend; sl:TStringList; begin Result:=False; SMTP:=TSMTPSend.Create; sl:=TStringList.Create; try sl.text:=Maildata; SMTP.UserName:=User; SMTP.Password:=Password; SMTP.TargetHost:=SMTPHost; SMTP.TargetPort:=SMTPPort; SMTP.AutoTLS:=true; if Trim(SMTPPort)<>'25' then SMTP.FullSSL:=true; // if sending to port 25, don't use encryption if SMTP.Login then begin result:=SMTP.MailFrom(MailFrom, Length(MailData)) and SMTP.MailTo(MailTo) and SMTP.MailData(sl); SMTP.Logout; end; finally SMTP.Free; sl.Free; end; end;
Escrito 23 mayo 2016 - 09:02
Escrito 23 mayo 2016 - 09:06
Gracias amigo enecumene, le comento que copie los archivos "ssl_openssl.pas" y "ssl_openssl_lib.pas" de la carpeta "C:\lazarus\components\synapse40\source\lib" a la carpeta de mi proyecto y ahora si corre el programa.
Voy a probar haber como me va y le comento.
Escrito 23 mayo 2016 - 11:49
Uses smtpsend, ssl_openssl; // copiar los archivos "ssl_openssl.pas" y "ssl_openssl_lib.pas" de la carpeta "\synapse40\source\lib" a la carpeta de nuestro proyecto sino sale error “ssl_openssl” // MailData is the text of the mail. function SendMail( User, Password, MailFrom, MailTo, SMTPHost, SMTPPort: string; MailData: string): Boolean; var SMTP: TSMTPSend; sl:TStringList; begin Result:=False; SMTP:=TSMTPSend.Create; sl:=TStringList.Create; try sl.text:=Maildata; SMTP.UserName:=User; SMTP.Password:=Password; SMTP.TargetHost:=SMTPHost; SMTP.TargetPort:=SMTPPort; SMTP.AutoTLS:=true; if Trim(SMTPPort)<>'25' then SMTP.FullSSL:=true; // if sending to port 25, don't use encryption if SMTP.Login then begin result:=SMTP.MailFrom(MailFrom, Length(MailData)) and SMTP.MailTo(MailTo) and SMTP.MailData(sl); SMTP.Logout; end; finally SMTP.Free; sl.Free; end; end;
procedure TForm1.Button1Click(Sender: TObject); begin if SendMail('técnicopc@hotmail.com','CLAVEcorreotécnicopc','técnicopc@hotmail.com','cliente01@hotmail.com','smtp.live.com','25','hola soy synapse') then // el puerto 465 no me funciona ShowMessage('mensaje enviado correctamente') else ShowMessage('FALLA al enviar el correo'); end;
Escrito 23 mayo 2016 - 01:20
Hola configuraste algo en tu correo ya que a mi no me deja enviar, con el puerto 25 directamente me da error y con el 465 se queda esperando un rato pero aun asi me marca como que no se puedo enviar.
Saludos....
Escrito 23 mayo 2016 - 02:21
Hola amigo BDWONG, bueno la verdad estuve probando con varios codes pero retomando el primero del enlace que compartió el amigo enecumene me funciono bien, mis herramientas son las siguiente:
* Lazarus 1.6
* Synapse 4.0
* Windows 10x64
* Internet Movistar
De ahí nada más que recuerde.
Escrito 23 mayo 2016 - 06:21
Se me olvidaba tambien tuve que poner en el mismo directorio del proyecto los archivos "libeay32.dll" y "ssleay32.dll" los cuales los conseguí de aquí:
https://github.com/silvioprog/xmailer
Están en la carpeta 3rdParty.
Alguien que me pueda ayudar agregandole un "asunto" al email
Escrito 24 mayo 2016 - 05:42
Haciendo más pruebas del envio de correo me he dado cuenta que cuando envío el mensaje "Añadir acción" el mensaje llega así "Añadir Acción" SOLO cuando lo envío a hotmail, pues en gmail y yahoo todo sale bien.
Para poderlo solucionar solo deben aumentar la Uses "LConvEncoding" y el mensaje de envío debe quedar así "UTF8ToISO_8859_1('hola soy synapse')"
Modificando el código debe quedar así:
Uses smtpsend, ssl_openssl, LconvEncoding; // copiar los archivos "ssl_openssl.pas" y "ssl_openssl_lib.pas" de la carpeta "\synapse40\source\lib" a la carpeta de nuestro proyecto sino sale error “ssl_openssl”, LconvEncoding es para UTF8ToISO_8859_1 // MailData is the text of the mail. function SendMail( User, Password, MailFrom, MailTo, SMTPHost, SMTPPort: string; MailData: string): Boolean; var SMTP: TSMTPSend; sl:TStringList; begin Result:=False; SMTP:=TSMTPSend.Create; sl:=TStringList.Create; try sl.text:=Maildata; SMTP.UserName:=User; SMTP.Password:=Password; SMTP.TargetHost:=SMTPHost; SMTP.TargetPort:=SMTPPort; SMTP.AutoTLS:=true; SMTP.FullSSL:=true; // if sending to port 25, don't use encryption if SMTP.Login then begin result:=SMTP.MailFrom(MailFrom, Length(MailData)) and SMTP.MailTo(MailTo) and SMTP.MailData(sl); SMTP.Logout; end; finally SMTP.Free; sl.Free; end; end; // SU LLAMADA: procedure TForm1.Button1Click(Sender: TObject); begin // el puerto 465 no me funciona así que uso el 25, usando UTF8ToISO_8859_1 para las Ñ y tildes en los mensajes. if SendMail('técnicopc@hotmail.com','CLAVEcorreotécnicopc','técnicopc@hotmail.com','cliente01@hotmail.com','smtp.live.com','25',UTF8ToISO_8859_1('Añadir acción')) then ShowMessage('mensaje enviado correctamente') else ShowMessage('FALLA al enviar el correo'); end;
De momento me esta funcionando perfectamente para Hotmail, GMail y Yahoo
pero me gustaría saber como agregarle asunto (Subject) a mis mensajes, alguna sugerencia...
Escrito 24 mayo 2016 - 06:01
function SendTo(const MailFrom, MailTo, Subject, SMTPHost: string; const MailData: TStrings): Boolean;
Escrito 24 mayo 2016 - 07:23
Ayer me la pase probando "sendto" y "sendtoex" y nada amigo enecumene, no logro hacerlos funcionar
Escrito 30 junio 2016 - 02:26
Buenas hermanos después de tanto sufrir pude encontrar una buena forma de poder enviar un email, les comparto los pasos:
Este es mi sistema:
* Win10x64
* Lazarus 1.6 32bits
1. descargar "xmailer-master.zip" desde: https://github.com/silvioprog/xmailer
2. luego instalan "xmailerpkg.lpk"
3. Copian las dlls (libeay32.dll and ssleay32.dll) desde "xmailer-master\3rdparty\openssl\win32" (o https://indy.fulgan.com/SSL/)hacia el directorio de su proyecto.
3. Ahora en lazarus Proyecto -> Inspector de Projecto -> Add -> nuevo requerimento -> nombre de paquete, y elijen Xmailerpkg.
4. En "Editor de código fuente", ponen:
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, XMailer; type { TForm1 } TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); var begin try // SMTP //Mail.Smtp.SSL := True; ShowMessage('SUCCESS :) '); finally End; end; end.
Ese es el código básico y funcional, pero si desean enviar dos o tres correos a la vez junto con archivos adjuntos y también para saber si se pudo enviar el correo o no pueden guiarse de este código para modificarlo:
Eso es todo, funciona con Hotmail, Gmail y Yahoo también soporta Ñ y Tildes
NOTA: si al usarlo con gmail les sale un error es casi seguro que se deba a una protección que tiene google para algunas aplicaciones de envio de correo, pero como la nuestra es legítima lo pueden arreglar activando "Acceso de aplicaciones menos seguras".
Saludos con todos hermanos
Escrito 03 julio 2016 - 10:13
Hola solo para complementar todo lo dicho por @monchito_elroro probe xmailer en linux en especifico ubuntu 16 lo unico que necesite fue instalarme la libreria de desarrollo de openssl bastaria con ejecutar en la terminal el siguiente comando
sudo apt-get install libssl-dev
Eso es todo Saludos...
Escrito 04 julio 2016 - 01:16
Excelente aporte amigo BDWONG, gracias por compartir
Escrito 04 julio 2016 - 01:44
Gracias a todos ustedes por compartir sus avances.
Yo tengo una duda, ¿funcionaría desde y hace cualquier correo? Se que comentaron que al menos las pruebas con Hotmail, Yahoo! y GMail fueron positivas. Más me pregunto si podría funcionar con otros clientes de correo, como por ejemplo los que ofrecen los ISP (Arnet, por ejemplo) o uno propio como los del tipo @TuEmpresa.com , etc.
Saludos,
Escrito 04 julio 2016 - 01:52
Buena pregunta amigo Delphius, al menos por aquí Perú más utilizan Gmail, Hotmail y como último Yahoo, por lo tanto solo con ellos hize las pruebas, puede que funcione con los demás pero habría que probar, saludos.
Escrito 04 julio 2016 - 05:17
Como manejan el tema de la privacidad de los datos del usuario? Yo el envio de mail prefiero delegarlo a aplicaciones externas (shell-> mailto:, outlook, etc) antes que pedirle datos privados al usuario (me refiero a correo y contraseña). No quiero tener ningun tipo de problemita, sobre todo ahora que las cuentas de correo en realidad son bastante mas "grandes", por ej con una cuenta de google accederias desde a los telefonos android del tipo, el correo, redes sociales, fotos, etc etc.
Osea yo no meteria la clave de mi correo en un programa de nadie; en el peor caso me creo un correo nuevo pero bueno
No se a veces me pongo muy paranoico jaja
Editado por Agustin Ortu, 04 julio 2016 - 05:17 .
Escrito 04 julio 2016 - 05:46
Como manejan el tema de la privacidad de los datos del usuario? Yo el envio de mail prefiero delegarlo a aplicaciones externas (shell-> mailto:, outlook, etc) antes que pedirle datos privados al usuario (me refiero a correo y contraseña). No quiero tener ningun tipo de problemita, sobre todo ahora que las cuentas de correo en realidad son bastante mas "grandes", por ej con una cuenta de google accederias desde a los telefonos android del tipo, el correo, redes sociales, fotos, etc etc.
Osea yo no meteria la clave de mi correo en un programa de nadie; en el peor caso me creo un correo nuevo pero bueno
No se a veces me pongo muy paranoico jaja
Buen punto.
No eres paranoico, haces bien en señalar este tema. Muy cierto que con el e-mail y el password de Google por ejemplo puedes hacerte del sus contactos, teléfonos, aplicaciones que tiene instaladas, el historial, su agenda de calendario, etc.
Si uno actuara de mala fe lo que haría es guardar esa info y que se le reenviara. La otra posibilidad es justamente no almacenar en ningún lugar esa info y solicitarla cada vez que se va a emplear la funcionalidad en la aplicación. Entre ambas posturas están hay algunas alternativas: como almacenar la información cifrada, y que sólo el usuario conozca la clave. o aclarar en la licencia de uso del programa que a pesar de que se solicita estos datos bajo ningún momento se hará uso de mala fe, o la tan simple como la que tu dices: que el usuario cliente se cree una cuenta propia para trabajar con dicho sistema.
Nota que estas opciones no son necesariamente excluyentes.
Además, puede que el tipo de aplicación que están desarrollando monchito_elroro no sea para sus clientes sino algo personal y poder enviar mensajes desde su cuenta. O bien, que la administración de dichas cuentas sea a cuenta de la propia empresa. En algunos lugares se te asigna una cuenta de correo oficial asociada a una cuenta para tu trabajo, junto con una clave autogenerada.
O hasta imagino como escenario de que se trate de una cuenta adicional que como desarrollador creamos para que se destine a modo de reporte desde nuestros desarrollos. El cliente puede que no necesitase saber de esta cuenta. Simplemente el ve una una pantallita donde dice "enviar reporte" y el sistema por su cuenta desde el e-mail que hemos destinado nos llega el aviso de que algo ha pasado.
Como vez, hay situaciones en donde no necesariamente se estaría en riesgo la privacidad del cliente.
Saludos,