Error con array en tsmtp

Error con array en tsmtp

Postby JoseLuis » Thu Sep 11, 2008 10:36 am

Hola amigos

Utilizando la funcion sendmail:
Code: Select all  Expand view
   oMail:SendMail( ;
      "micorreo@micorreo.com", ; // de
      { csender }, ;         // para (arreglo)
      ( mensaje ),;          // Mensaje
      (asunto),;             // Asunto
      { fichero }, ;         // Arreglo de nombres de archivos a agregar
      { }, ;                 // aCC
      { }, ;                 // aBCC
      lReceipt, ;            // acuse de recibo
      cMsg )                 // mensaje en HTML


Si csender corresponde a una sola direccion de envío, funciona

Sin embargo si csender corresponde a un array con multiples direcciones de correo, no funciona, y me da el siguiene error:
Application
===========
Path and name: C:\fuentes\xharbour\GESPAQ08\gespaqn.Exe (32 bits)
Size: 1,018,880 bytes
Time from start: 0 hours 0 mins 20 secs
Error occurred at: 11/09/08, 12:24:25
Error description: Error BASE/1108 Argument error: AT
Args:
[ 1] = C <
[ 2] = A { ... }

Stack Calls
===========
Called from: => AT(0)
Called from: => CLEANEMAIL(659)
Called from: tsmtp.prg => TSMTP:ONREAD(270)
Called from: tsmtp.prg => (b)TSMTP:NEW(131)
Called from: tsocket.prg => (b)TSOCKET:TSOCKET(77)
Called from: tsocket.prg => TSOCKET:ONREAD(0)
Called from: tsocket.prg => TSOCKET:HANDLEEVENT(229)
Called from: tsocket.prg => (b)TSOCKET:NEW(121)
Called from: WINDOW.PRG => TMDIFRAME:ASYNCSELECT(0)
Called from: WINDOW.PRG => TMDIFRAME:HANDLEEVENT(0)
Called from: WINDOW.PRG => _FWH(0)
Called from: => WINRUN(0)
Called from: WINDOW.PRG => TMDIFRAME:ACTIVATE(0)
Called from: gespaqn.prg => MAIN(69)


Alguna idea?
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Re: Error con array en tsmtp

Postby FranciscoA » Thu Sep 11, 2008 11:50 am

Revisa bien el codigo en la funcion CleanMail(). El error esta en la linea 659, e indica el uso de dos datos contradictorios: Array vs Caracter.

Saludos.
User avatar
FranciscoA
 
Posts: 2114
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Postby JoseLuis » Thu Sep 11, 2008 12:23 pm

hola
El código forma parte de la tsmtp, y es:
Code: Select all  Expand view
// IBTC: Convert "Your Name <your@email.com>" into "your@email.com"
Static Function CleanEMail( cEMail )
Local nLeft, nRight
If ( nLeft := At( "<", cEMail ) ) > 0
   If ( nRight := At( ">", cEMail ) ) > 0
      cEMail := SubStr( cEMail, nLeft + 1, nRight - nLeft - 1 )
   Else
      cEMail := SubStr( cEMail, nLeft + 1 )
   Endif
Endif

Return AllTrim( cEMail )


Aqui me pierdo

Saludos
JoseLuis
 
Posts: 426
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Postby FranciscoA » Thu Sep 11, 2008 1:31 pm

JoseLuis:
He probado la funcion y trabaja bien cuando el nombre del correo se introduce correctamente, pero si por error se introducen "<<", devuelve el mencionado mensaje de error.

Prueba a cambiar la function por esta que te envio. (le agregué un segundo chequeo y detecta lo anteriormente descrito)

Saludos

//-------------------------------------
Static Function CleanEMail( cEMail )
Local nLeft, nRight

If ( nLeft := At( "<", cEMail ) ) > 0
If ( nRight := At( ">", cEMail ) ) > 0
cEMail := SubStr( cEMail, nLeft + 1, nRight - nLeft - 1 )
Else
cEMail := SubStr( cEMail, nLeft + 1 )
Endif
Endif

//Doble chequeo
If ( nLeft := At( "<", cEMail ) ) > 0
cEMail := SubStr( cEMail, nLeft + 1 )
Endif

If ( nRight := At( ">", cEMail ) ) > 0
cEMail := SubStr( cEMail, nLeft, nRight - 1 )
Endif

Return AllTrim( cEMail )
User avatar
FranciscoA
 
Posts: 2114
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 43 guests