Why is 4.7.7 CiviMail failing trying to insert a row into civicrm_mailing_recipient?
See issue CRM-18543 and PR 8355.

CRM-18345 changed the behaviour of the foreign keys on civicrm_mailing_recipient when deleting civicrm_email or civicrm_phone. The email_id and phone_id columns are made NULL rather than the row being cascade deleted.

This means there can exist rows in civicrm_mailing_recipient where both these fields are NULL.

So the Mailing Job software needs to handle rows where BOTH email_id and phone_id are NULL.

I've supplied a patch that handles this case by ignoring such rows.