In traditional cron implementations, you can't do it this way. Variable definitions in a crontab are global, and cron uses the same email address for all commands.
One workaround would be to use a local address and redirect based on the input.
Another method to send the output of a job to a different address is to do the sending manually. See How to pipe output from one process to another but only execute if the first has output? for various methods.
Some modern cron implementations, at least the one in systemd, parse the crontab differently (thanks geedoubleya, jarauh): only assignments above a job line apply to that job. So if you're on a modern Linux system, there's a chance you can do it. Check the documentation on your system (
man 5 crontab).
You still can't do what you proposed in your question, because cron doesn't expand the right-hand side of variable assignments.
MAILTO to a value beginning with a dollar sign. You need to repeat the old address.
# Make a hambone appear. Email sent to the user running the crontab.
* * * * * /scripts/hambone.pl
#Do something. Email sent to firstname.lastname@example.org
* * * * * /scripts/chown_abrahams_niece.sh
# Hunt rabbits. Doesn't send email.
* * * * * /scripts/hunt.pl --rabbits
# Eat Ham. Email sent to bob on the local machine.
* * * * * /scripts/manga_ham.py
Also note that
MAILTO=porklover.cramble.edu would send mail to the account
porklover.cramble.edu on the local machine. That's probably not what you want.