title: Sending attachment in HTML email with Python
body: <p>I saw there are a few somewhat similar questions on stack overflow already, but I couldn't find a solution to my specific problem in them.  </p>
  
  <p>I am trying to use Python to send an HTML email with a .pdf attachment.  It seems to work fine when I check my email on gmail.com, but when I check the message through apple's Mail program, I do not see the attachment.  Any idea what is causing this?</p>
  
  <p>My code is below.  A lot of it is copied from various places on stack overflow, so I do not completely understand what each part is doing, but it seems to (mostly) work:</p>
  
  <pre><code>import smtplib  
  from email.mime.multipart import MIMEMultipart
  from email.mime.text import MIMEText                    
  from email.mime.application import MIMEApplication
  from os.path import basename
  import email
  import email.mime.application
  
  #plain text version
  text = "This is the plain text version."
  
  #html body
  html = """&lt;html&gt;&lt;p&gt;This is some HTML&lt;/p&gt;&lt;/html&gt;"""
  
  # Create message container - the correct MIME type is multipart/alternative.
  msg = MIMEMultipart('alternative')
  msg['Subject'] = "Deliverability Report"
  msg['From'] = "me@gmail.com"
  msg['To'] = "you@gmail.com"
  
  # Record the MIME types of both parts - text/plain and text/html
  part1 = MIMEText(text, 'plain')
  part2 = MIMEText(html, 'html')
  
  # create PDF attachment
  filename='graph.pdf'
  fp=open(filename,'rb')
  att = email.mime.application.MIMEApplication(fp.read(),_subtype="pdf")
  fp.close()
  att.add_header('Content-Disposition','attachment',filename=filename)
  
  # Attach parts into message container.
  msg.attach(att)
  msg.attach(part1)
  msg.attach(part2)
  
  # Send the message via local SMTP server.
  s = smtplib.SMTP()
  s.connect('smtp.webfaction.com')
  s.login('NAME','PASSWORD')
  s.sendmail(msg['From'], msg['To'], msg.as_string())
  s.quit()
  </code></pre>
  
  <p>I'm not sure if it is relevant, but I am running this code on a WebFaction server.</p>
  
  <p>Thanks for the help!</p>