title: Taking a screenshot and sending it as e-mail attachment
body: <p>I'm trying to create two functions, one that takes a screenshot and then calls the other function that should send an email with the screenshot attached. Both of them work if they're separated, but when I try to piece them together a huge error message pops up.</p>
  
  <p>I tried putting it in the same block of code, separating them in two functions, different ways of calling the function... Nothing seems to work</p>
  
  <pre><code>import smtplib
  from email import encoders
  from email.mime.base import MIMEBase
  from email.mime.multipart import MIMEMultipart
  from email.mime.text import MIMEText
  from email.mime.image import MIMEImage
  import os.path
  
  def enviar_email():
      email = 'email'
      password = 'password'
      subject = 'This is the subject'
      message = 'This is my message'
      file_location = 'ss1.jpg'
  
      msg = MIMEMultipart()
      msg['From'] = email
      msg['To'] = email
      msg['Subject'] = subject
  
      msg.attach(MIMEText(message, 'plain'))
  
      # Setup the attachment
      filename = os.path.basename(file_location)
      attachment = open(file_location, "rb").read()
      image = MIMEImage(attachment, name=filename)
      msg.attach(image)
  
  
      # Attach the attachment to the MIMEMultipart object
      # msg.attach(part)
  
  
      server = smtplib.SMTP('smtp.gmail.com', 587)
      server.starttls()
      server.login(email, password)
      text = msg.as_string()
      server.sendmail(email, email, text)
      server.quit()
  
  def main():
      imagem = ImageGrab.grab()
      imagem.save('ss1.jpg', 'jpeg')
      enviar_email()
  
  main()
  
  ***************************************
  Error I get: 
  
  
  
  RuntimeError:
          An attempt has been made to start a new process before the
          current process has finished its bootstrapping phase.
  
          This probably means that you are not using fork to start your
          child processes and you have forgotten to use the proper idiom
          in the main module:
  
              if __name__ == '__main__':
                  freeze_support()
                  ...
  
          The "freeze_support()" line can be omitted if the program
          is not going to be frozen to produce an executable.
  Traceback (most recent call last):
    File ".\enviar_email.py", line 51, in &lt;module&gt;
      main()
    File ".\enviar_email.py", line 47, in main
      imagem = ImageGrab.grab()
  </code></pre>