OK, I went back and looked through some old posts and the Codex like you're supposed to :-)
I did find a solution here to the first problem, but I have kind of an unusual second problem. I am using another plugin that allows me to define custom post statuses other than "Draft" or "Pending." These custom post statuses are important for me to retain, so I can't drop them. Unfortunately, when I use the three alternate hooks mentioned in the thread I've linked to, they don't recognize my custom statuses, and the e-mail send does not get triggered.
Instead of
add_action('draft_to_publish','function_name');
I need something like
add_action('readytopublish_to_publish','function_name');
("Ready to Publish" is the name of one of my custom statuses)
Any way around this problem?