* Sender email lcAddress='' IF '@'$Sender lcAddress=Sender ELSE loReply=loItem.Reply() llOk=.F. * First, lets try to get it from this method IF TYPE('loReply.Recipients.Item(1)')='O' IF '@'$loReply.Recipients.Item(1).Address lcAddress=loReply.Recipients.Item(1).Address llOk=.T. ENDIF ENDIF * If the first method failed IF NOT llOk IF TYPE('loReply.Recipients[1]')='O' loRecipient=loReply.Recipients[1] IF NOT EMPTY(loRecipient.Address) IF '@'$loRecipient.Address lcAddress=loRecipient.Address ELSE IF '@'$loRecipient.Name lcAddress=loRecipient.Name ENDIF ENDIF ELSE IF '@'$loRecipient.Name lcAddress=loRecipient.Name ENDIF ENDIF ENDIF ENDIF ENDIF REPLACE Address WITH LOWER(lcAddress)I first try with the loReply.Recipients.Item(1) and then if that doesn't work, I go with 'loReply.Recipients[1]. However, despite as complex as it is, out of 374 emails, 32 was not able to be processed to retrieve the email of the sender. That represents 8.56% of failures. I really don't know how to solidy that routine to make sure I would get all of them. This automation is a very complex one and I sure hope it will be adjusted in an upcoming version.