Problema al adjuntar archivo a correo saliente
Publicado por Luciano Lator (3 intervenciones) el 29/10/2009 19:33:00
El problema que tengo es que no se adjunta el archivo. Es más, no envia ni siquiera el mail cuando adjunto algo. Lo raro es que es que dice que lo envió pero no llega nada a ningún destinatario.
Puede ser por la ruta del archivo pero he probado con D:\General.pdf, poniendo el archivo en la carpeta bin de la KB y llamándolo por General.pdf, tambien con ruta absoluta como \\servidor\path\nombrearchivo.extension, etc.
Si alguno me puede dar una ayuda o ejemplo de como poner un path para adjuntar archivos, le agradeceria mucho.
También agradecería si tienen un ejemplo con otro servidor web gratuito pues en mi caso use gmail y lo importate es enviar archivos adjuntos.
Otra ocurrencia puede ser algún problema con el servidor de gmail. En caso que alguno sepa de esta razón, me podria dar indicaciones de otro servidor y de su configuración (smtp, port, secure, authentication) o sólo el nombre del mismo.
Desde ya Muchas Gracias a toda la comunidad !!!!
Mi código es:
A tener en cuenta la siguiente definición de variables:
// &smtp es variable del tipo SMTPSession
// &Mail es variable del tipo MailMessage
// &Destinos es variable del tipo MailRecipient
// &Serv hace referencia al mail del remitente C60
// &RMail hace referencia al mail del destinatario C60
// &To hace referencia al nombre del remitente C60
// &CC y &CO son 2 destinatarios mas C60
// &Asunto hace referencia al asunto del correo C60
// &TexMail hace referencia al cuerpo del correo. Es de tipo Long Varchar de 10000
// &Attach es el path del adjunto C60
// &errrcode N10
-----------------------------------------Webpanel "Llamador" ----------------------------------------------------------
// existe un bottón "enviar" asociado al evento 'Enviar'
Event 'Enviar'
Call(PSendMail,&Serv,&RMail,&To,&CC,&CO,&Asunto,&TexMail,&Attach) // le envio los datos del formulario
EndEvent // 'Enviar'
------------------------------------------ Proceso "SendMail" -----------------------------------------------------------
-----------Rules-----------
PARM(&Serv, &RMail, &To, &CC, &CO, &Asunto, &TexMail, &Attach);
----------Source----------
&smtp.Host = 'smtp.gmail.com' //(SMTP.SMTPserver.COM.AR)
&smtp.Port = 465 // o 25, 587
&smtp.Sender.Address = &Serv //Email remitente, o sea, quien manda el mail
&smtp.Sender.Name = &To //Nombre del remitente
&smtp.Secure = 1 // si no se trabaja con HTTPS, el valor sera 0 o comentar
&smtp.Authentication = 1 //si el correo no requiere pass por ser local, el valor sera 0 o comentar
&smtp.UserName = &Serv //direccion de correo saliente o del remitente
&smtp.Password = 'xxxxxxxxxx' // //si el correo no requiere pass por ser local, comentar
&smtp.Login()
&Mail.Clear()
&Mail.To.New("", &RMail)
if &CC <> ""
&Destinos.Address = &CC
&Destinos.Name = "" // destinatario 1, pero no le envie parametro. Asi que no hay nombre
&Mail.CC.Add(&Destinos)
endif
if &CO <> ""
&Destinos.Address = &CO
&Destinos.Name = "" // destinatario 2, pero no le envie parametro. Asi que no hay nombre
&Mail.CC.Add(&Destinos)
endif
&Mail.Subject = &Asunto
&Mail.Text = &TexMail
&Mail.Attachments.Clear()
if &Attach <> ""
&Mail.Attachments.Add(&Attach) // &archivo
endif
&errrcode = &smtp.ErrCode // adjunto numero de codigo de error
If &errrcode = 0 Or &errrcode = 1
&smtp.Send(&Mail) // Envio del mail
// &smtp.Timeout = 600
&smtp.Logout()
Msg("Mail enviado satisfactoriamente")
Else
Msg('El envio del mail fallo, el número de error es ' + Trim(Str(&errrcode)))
Endif
_________________________________________________________________
Puede ser por la ruta del archivo pero he probado con D:\General.pdf, poniendo el archivo en la carpeta bin de la KB y llamándolo por General.pdf, tambien con ruta absoluta como \\servidor\path\nombrearchivo.extension, etc.
Si alguno me puede dar una ayuda o ejemplo de como poner un path para adjuntar archivos, le agradeceria mucho.
También agradecería si tienen un ejemplo con otro servidor web gratuito pues en mi caso use gmail y lo importate es enviar archivos adjuntos.
Otra ocurrencia puede ser algún problema con el servidor de gmail. En caso que alguno sepa de esta razón, me podria dar indicaciones de otro servidor y de su configuración (smtp, port, secure, authentication) o sólo el nombre del mismo.
Desde ya Muchas Gracias a toda la comunidad !!!!
Mi código es:
A tener en cuenta la siguiente definición de variables:
// &smtp es variable del tipo SMTPSession
// &Mail es variable del tipo MailMessage
// &Destinos es variable del tipo MailRecipient
// &Serv hace referencia al mail del remitente C60
// &RMail hace referencia al mail del destinatario C60
// &To hace referencia al nombre del remitente C60
// &CC y &CO son 2 destinatarios mas C60
// &Asunto hace referencia al asunto del correo C60
// &TexMail hace referencia al cuerpo del correo. Es de tipo Long Varchar de 10000
// &Attach es el path del adjunto C60
// &errrcode N10
-----------------------------------------Webpanel "Llamador" ----------------------------------------------------------
// existe un bottón "enviar" asociado al evento 'Enviar'
Event 'Enviar'
Call(PSendMail,&Serv,&RMail,&To,&CC,&CO,&Asunto,&TexMail,&Attach) // le envio los datos del formulario
EndEvent // 'Enviar'
------------------------------------------ Proceso "SendMail" -----------------------------------------------------------
-----------Rules-----------
PARM(&Serv, &RMail, &To, &CC, &CO, &Asunto, &TexMail, &Attach);
----------Source----------
&smtp.Host = 'smtp.gmail.com' //(SMTP.SMTPserver.COM.AR)
&smtp.Port = 465 // o 25, 587
&smtp.Sender.Address = &Serv //Email remitente, o sea, quien manda el mail
&smtp.Sender.Name = &To //Nombre del remitente
&smtp.Secure = 1 // si no se trabaja con HTTPS, el valor sera 0 o comentar
&smtp.Authentication = 1 //si el correo no requiere pass por ser local, el valor sera 0 o comentar
&smtp.UserName = &Serv //direccion de correo saliente o del remitente
&smtp.Password = 'xxxxxxxxxx' // //si el correo no requiere pass por ser local, comentar
&smtp.Login()
&Mail.Clear()
&Mail.To.New("", &RMail)
if &CC <> ""
&Destinos.Address = &CC
&Destinos.Name = "" // destinatario 1, pero no le envie parametro. Asi que no hay nombre
&Mail.CC.Add(&Destinos)
endif
if &CO <> ""
&Destinos.Address = &CO
&Destinos.Name = "" // destinatario 2, pero no le envie parametro. Asi que no hay nombre
&Mail.CC.Add(&Destinos)
endif
&Mail.Subject = &Asunto
&Mail.Text = &TexMail
&Mail.Attachments.Clear()
if &Attach <> ""
&Mail.Attachments.Add(&Attach) // &archivo
endif
&errrcode = &smtp.ErrCode // adjunto numero de codigo de error
If &errrcode = 0 Or &errrcode = 1
&smtp.Send(&Mail) // Envio del mail
// &smtp.Timeout = 600
&smtp.Logout()
Msg("Mail enviado satisfactoriamente")
Else
Msg('El envio del mail fallo, el número de error es ' + Trim(Str(&errrcode)))
Endif
_________________________________________________________________
Valora esta pregunta
0