diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 5ed3b1714b..3279c5a96a 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,14 @@ The license applies to all entries newer than 2009-04-28. */ +2010-11-18 12:49 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) + * contrib/hbtip/sendmail.prg + * contrib/hbtip/mail.prg + ! Fixed various ages-old bugs in recipient list handling. + ; TOFIX: BEWARE to all users. BCC is NOT actually blind in this + implementation. If someone has an idea how to fix this + bug, pls shout. + 2010-11-18 12:21 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/contrib/hbct/bitnum.c ! fixed && operator wrongly used instead of & in function NumMirr() diff --git a/harbour/contrib/hbtip/mail.prg b/harbour/contrib/hbtip/mail.prg index 5d90b90873..860613d270 100644 --- a/harbour/contrib/hbtip/mail.prg +++ b/harbour/contrib/hbtip/mail.prg @@ -560,10 +560,10 @@ METHOD setHeader( cSubject, cFrom, xTo, xCC, xBCC ) CLASS TipMail cTo := "" imax := Len( aTO ) FOR i := 1 TO imax - IF i > 1 + cTo += LTrim( WordEncodeQ( tip_GetNameEMail( AllTrim( aTo[ i ] ) ), ::cCharset ) + " <" + tip_GetRawEMail( AllTrim( aTo[ i ] ) ) + ">" ) + IF i < imax cTo += "," + tip_CRLF() + " " ENDIF - cTo += LTrim( WordEncodeQ( tip_GetNameEMail( AllTrim( aTo[ i ] ) ), ::cCharset ) + " <" + tip_GetRawEMail( AllTrim( aTo[ i ] ) ) + ">" ) NEXT IF Empty( cTo ) @@ -578,10 +578,10 @@ METHOD setHeader( cSubject, cFrom, xTo, xCC, xBCC ) CLASS TipMail cCC := "" imax := Len( aCC ) FOR i := 2 TO imax - IF i > 1 + cCC += LTrim( WordEncodeQ( tip_GetNameEMail( AllTrim( aCC[ i ] ) ), ::cCharset ) + " <" + tip_GetRawEMail( AllTrim( aCC[ i ] ) ) + ">" ) + IF i < imax cCC += "," + tip_CRLF() + " " ENDIF - cCC += LTrim( WordEncodeQ( tip_GetNameEMail( AllTrim( aCC[ i ] ) ), ::cCharset ) + " <" + tip_GetRawEMail( AllTrim( aCC[ i ] ) ) + ">" ) NEXT IF ! Empty( cCC ) .AND. ! ::setFieldPart( "Cc", cCC ) @@ -593,10 +593,10 @@ METHOD setHeader( cSubject, cFrom, xTo, xCC, xBCC ) CLASS TipMail cBCC := "" imax := Len( aBCC ) FOR i := 2 TO imax - IF i > 1 + cBCC += LTrim( WordEncodeQ( tip_GetNameEMail( AllTrim( aBCC[ i ] ) ), ::cCharset ) + " <" + tip_GetRawEMail( AllTrim( aBCC[ i ] ) ) + ">" ) + IF i < imax cBCC += "," + tip_CRLF() + " " ENDIF - cBCC += LTrim( WordEncodeQ( tip_GetNameEMail( AllTrim( aBCC[ i ] ) ), ::cCharset ) + " <" + tip_GetRawEMail( AllTrim( aBCC[ i ] ) ) + ">" ) NEXT IF ! Empty( cBCC ) .AND. ! ::setFieldPart( "Bcc", cBCC ) diff --git a/harbour/contrib/hbtip/sendmail.prg b/harbour/contrib/hbtip/sendmail.prg index e90a5b5e0e..06259b2908 100644 --- a/harbour/contrib/hbtip/sendmail.prg +++ b/harbour/contrib/hbtip/sendmail.prg @@ -95,10 +95,11 @@ FUNCTION hb_SendMail( cServer, nPort, cFrom, xTo, xCC, xBCC, cBody, cSubject, ; LOCAL cData LOCAL oUrl1 - LOCAL cTmp := "" - LOCAL cTo := "" - LOCAL cCC := "" - LOCAL cBCC := "" + LOCAL cTmp + LOCAL cTo + LOCAL cCC + LOCAL cBCC + LOCAL tmp LOCAL lConnectPlain := .F. LOCAL lReturn := .T. @@ -168,12 +169,17 @@ FUNCTION hb_SendMail( cServer, nPort, cFrom, xTo, xCC, xBCC, cBody, cSubject, ; // cTo IF ISARRAY( xTo ) + FOR tmp := Len( xTo ) TO 1 STEP -1 + IF Empty( xTo[ tmp ] ) + hb_ADel( xTo, tmp, .T. ) + ENDIF + NEXT + cTo := "" + cTmp := "" IF Len( xTo ) > 1 FOR EACH cTo IN xTo IF cTo:__enumIndex() != 1 - IF ! Empty( cTo ) - cTmp += tip_GetRawEMail( AllTrim( cTo ) ) + "," - ENDIF + cTmp += tip_GetRawEMail( AllTrim( cTo ) ) + "," ENDIF NEXT cTmp := SubStr( cTmp, 1, Len( cTmp ) - 1 ) @@ -189,11 +195,15 @@ FUNCTION hb_SendMail( cServer, nPort, cFrom, xTo, xCC, xBCC, cBody, cSubject, ; // CC (Carbon Copy) IF ISARRAY( xCC ) + FOR tmp := Len( xCC ) TO 1 STEP -1 + IF Empty( xCC[ tmp ] ) + hb_ADel( xCC, tmp, .T. ) + ENDIF + NEXT + cCC := "" IF Len( xCC ) > 0 FOR EACH cTmp IN xCC - IF ! Empty( cTmp ) - cCC += tip_GetRawEMail( AllTrim( cTmp ) ) + "," - ENDIF + cCC += tip_GetRawEMail( AllTrim( cTmp ) ) + "," NEXT cCC := SubStr( cCC, 1, Len( cCC ) - 1 ) ENDIF @@ -204,11 +214,15 @@ FUNCTION hb_SendMail( cServer, nPort, cFrom, xTo, xCC, xBCC, cBody, cSubject, ; // BCC (Blind Carbon Copy) IF ISARRAY( xBCC ) + FOR tmp := Len( xBCC ) TO 1 STEP -1 + IF Empty( xBCC[ tmp ] ) + hb_ADel( xBCC, tmp, .T. ) + ENDIF + NEXT + cBCC := "" IF Len( xBCC ) > 0 FOR EACH cTmp IN xBCC - IF ! Empty( cTmp ) - cBCC += tip_GetRawEMail( AllTrim( cTmp ) ) + "," - ENDIF + cBCC += tip_GetRawEMail( AllTrim( cTmp ) ) + "," NEXT cBCC := SubStr( cBCC, 1, Len( cBCC ) - 1 ) ENDIF