Try this: use "%40" in place of the "@"
As an alternative, if you don't want to create config files, do the unattended upload with curl instead of ftp:
curl
ftp
curl -u user:password -T file ftp://server/dir/file
Try to define the account in a ~/.netrc file like this:
~/.netrc
machine host login info@domain.com password mypassword
Check man netrc for details.
man netrc