title: How to set a charset in email using smtplib in Python 2.7?
body: <p>I'm writing a simple smtp-sender with authentification. Here's my code</p>
  
  <pre><code>    SMTPserver, sender, destination = 'smtp.googlemail.com', 'user@gmail.com', ['reciever@gmail.com']
      USERNAME, PASSWORD = "user", "password"
  
      # typical values for text_subtype are plain, html, xml
      text_subtype = 'plain'
  
  
      content="""
      Hello, world!
      """
  
      subject="Message Subject"
  
      from smtplib import SMTP_SSL as SMTP       # this invokes the secure SMTP protocol (port 465, uses SSL)
      # from smtplib import SMTP                  # use this for standard SMTP protocol   (port 25, no encryption)
      from email.MIMEText import MIMEText
  
      try:
          msg = MIMEText(content, text_subtype)
          msg['Subject']=       subject
          msg['From']   = sender # some SMTP servers will do this automatically, not all
  
          conn = SMTP(SMTPserver)
          conn.set_debuglevel(False)
          conn.login(USERNAME, PASSWORD)
          try:
              conn.sendmail(sender, destination, msg.as_string())
          finally:
              conn.close()
  
      except Exception, exc:
          sys.exit( "mail failed; %s" % str(exc) ) # give a error message
  </code></pre>
  
  <p>It works perfect, untill I try to send non-ascii symbols (russian cyrillic). How should i define a charset in a message to make it show in a proper way? Thanks in advance!</p>
  
  <p>UPD. I've changed my code:</p>
  
  <pre><code>text_subtype = 'text'
  content="&lt;p&gt;Текст письма&lt;/p&gt;"
  msg = MIMEText(content, text_subtype)
  msg['From']=sender # some SMTP servers will do this automatically, not all
  msg['MIME-Version']="1.0"
  msg['Subject']="=?UTF-8?Q?Тема письма?="
  msg['Content-Type'] = "text/html; charset=utf-8"
  msg['Content-Transfer-Encoding'] = "quoted-printable"
  …
  conn.sendmail(sender, destination, str(msg))
  </code></pre>
  
  <p>So, first time I spectify text_subtype = 'text', and then in header I place a msg['Content-Type'] = "text/html; charset=utf-8" string. Is it correct?</p>
  
  <p><strong>UPDATE</strong> Finally, I've solved my message problem
  You should write smth like msg = MIMEText(content.encode('utf-8'), 'plain', 'UTF-8')</p>