If I send a signed email, how does the end user get the public key? I am sending a signed email using Python and smtplib. I have successfully signed the email using this example: http://proj.badc.rl.ac.uk/svn/ndg-security/branches/Dependencies/m2crypto/doc/howto.smime.html

My question is how does the end user get the public key to check the signature? I have not seen any examples of attaching the public key to the same email. Thanks.
You can send the public key certificate as an attachment with the email or you can send the public key certificate in a separate email.

The main point is the end-user should receive the public key for verification.

A certificate can be a file e.g. *.cer . The end user needs to have a program to verify the document. 

UPDATE:
Chances of an MIM attack or other attacks always exist. But having more than one form independent communication can help the situation along. E.g. send the key in soft form (usb/CD) with a courier service. Or talk to the person you send your public key to and ask them to open the key in a text editor and tally first and the last line of the key. Or use public key database/storage providers like PGP does.