PDA

Ver la Versión Completa : Envio email a través de thunderbird


pjmedina
24-12-2010, 11:34:23
Buenos dias a tod@s.
Lo primero de todo desearos felices fiestas.

A ver si puede alguien ayudarme, os comento lo que me pasa.

Estoy intentado mandar email con Thunderbird desde una aplicación hecha con delphi 7.
Si en windows xp, pulso inicio, ejecutar, y pego:

thunderbird -compose to='destino@dominio.com',cc='copia@dominio.com',subject="Pruebas Thunderbird",body="Mensaje de prueba Thunderbird", attachment='C:\imagen.jpg'

Funciona perfectamente, me abre la pantalla para enviar el mail.
Ahora bien,
he hecho una funcion que me genera esa linea de comando, pero falla al ejecutarla.
procedure TForm1.Enviar;
var
directori:string;
cadena:string;
cad:PAnsiChar;
begin
directori:='C:';
cadena:='thunderbird -compose to=';
cadena:=cadena+chr(39)+ecuenta.text+chr(39);
if Ecopia.Text<>'' then
cadena:=cadena+',cc='+chr(39)+ecopia.text+chr(39);
cadena:=cadena+',subject="'+editasunto.text+'"';
if Memo1.Text<>'' then
cadena:=cadena+',body="'+Memo1.Text+'"';
if editfichero.Text<>''then
cadena:=cadena+',attachment='+chr(39)+directori+'\'+editfichero.text;
if(ckAdjunto2.Checked)then
begin
cadena:=cadena+','+directori+'\'+Fichero2.Text+chr(39);
end
else if editfichero.Text<>'' then
cadena:=cadena+chr(39);
cad:=PChar(cadena);
if ShellExecute(Handle, 'open', cad, nil, nil, SW_SHOWNORMAL)<= 32 Then
MessageDlg('Error al enviar',mtError,[mbok],0);
end;

Siempre da error al enviar. La linea se genera bien, porque he probado a escribirla en un memo antes de ejecutarla, y pegarla manualmente en inicio, ejecutar, y asi si que funciona.

Otra prueba que he hecho es entrar en la consola msdos, Inicio->ejecutar->escribir cmd y pulsar enter. Una vez alli escribir manualmente la instruccion, pero también falla, dice:
"Thunderbird" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.

Espero podais ayudarme, esto me trae de cabeza.

Saludos y gracias por todo.

Ñuño Martínez
24-12-2010, 12:03:13
Pues creo que la respuesta de la consola de comandos es clara:

"Thunderbird" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.

Useasé, que no lo encuentra. Ten en cuenta que tiene que saber dónde está, y que yo sepa "C:/archivos de programa/thunderbird" no está en la lista de sitios donde buscar. Prueba a escribir la ruta completa "C:/archivos de programa/thunderbird/thunderbird.exe ...". (Ojo, que la ruta en tu sistema puede ser otra. Es más, estoy usando "/" en lugar de "\" :eek:)

pjmedina
24-12-2010, 12:11:12
Lo he probado y tampoco.
Además porque funciona desde inicio ejecutar, poniendo thunderbird únicamente?


Otro comando que no me funciona es este:

net send 192.168.1.20 "Mensaje a enviar"

El caso es el mismo, desde inicio, ejecutar va perfectamente, pero desde delphi no.

Ñuño Martínez
28-12-2010, 11:58:28
Acabo de fijarme en un detalle que se me pasó antes. Tú le pasas las opciones en la misma cadena, pero con ShellExecute (http://www.latiumsoftware.com/en/delphi/00002.php)los parámetros se pasan a través del cuarto parámetro:

ShellExecute(Handle, Operation, FileName, Params, Folder, ShowCmd)

Por eso no funciona.

Delfino
30-12-2010, 05:15:11
Si no me equivoco el componente TJvMail de la suite JVCL (http://jvcl.delphi-jedi.org/) permite enviar correo por medio del cliente de correo instalado..

pjmedina
09-11-2011, 17:33:27
Acabo de fijarme en un detalle que se me pasó antes. Tú le pasas las opciones en la misma cadena, pero con ShellExecute (http://www.latiumsoftware.com/en/delphi/00002.php)los parámetros se pasan a través del cuarto parámetro:

ShellExecute(Handle, Operation, FileName, Params, Folder, ShowCmd)
Por eso no funciona.

Efectivamente era eso. Ha pasado bastante tiempo, pero es que he andado muy liado y olvide este post.

Gracias por todo.

Paoti
13-01-2012, 17:22:43
¡hola pjmedina!


Lograste resolver el envió de correos a travez de thunderbird,

¿Podrías compartirnos tu solución?

muchas gracias de antemano.

Ñuño Martínez
17-01-2012, 12:52:53
Si te fijas, la respuesta está justo en el mensaje anterior al tuyo. ;)