Why are contacts not receiving emails when do not email not checked?
You may have zombies. I use this term not because it's almost Halloween, but because imports can leave you with undead contacts, and this may be a variation of that.

Boolean (yes/no) fields in CiviCRM have the value 1 or 0, but it's possible in the database for the field to have a null value.  When you create a contact manually, the Is Deceased, Do Not Mail, etc. fields are set to 0, but if you run an import with one of those fields and only mark the dead or no-mail people with 1s, the rest will have the value as null.

When viewing a contact, it will only display deceased or do not mail if those values are 1. When sending email, it will only send if those values are 0.  Hence, you have this mysterious issue.

I suspect you may have imported elected officials, included Do Not Email, but neglected to fill the zeroes where it's okay to email.  Xavier's solution should work: by editing and re-editing the field, you can reset the value.  It gets tedious for a bunch of contacts, though.

In the database you can execute the following query to fix this:

UPDATE civicrm_contact SET do_not_email = 0 WHERE do_not_email IS NULL;


Repeat for is_deceased and any others like that you want.  You can also find these contacts in the Search Builder and use Batch Update Via Profile on the results, using a profile with Do Not Email in it.