Missing subject line on email sent using smptlib












0














I'm trying to send out an email using python's smptlib, which seems to be working fine except the subject key does not get attached. (image [1]: https://i.stack.imgur.com/XkpLh.png)



I've looked at other solutions but none of them work for me. They are solving mostly for text based additions in the form of headers but my code involves sending a dataframe as a table which gets messed up when I try these solutions.



Posts I've looked at:



Python: "subject" not shown when sending email using smtplib module



Subject line not coming in the smtp mail sent from python



Python smtplib sendmail() not working with subject / body



import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from tabulate import tabulate

sender = 'email@email.com'
recipients = 'email@email.com'
subject = "Test Email 1234"


# Create message container - the correct MIME type is multipart/alternative.
msg = MIMEMultipart()

msg['From'] = sender
msg['To'] = ", ".join(recipients)
msg['Subject'] = subject

# Create the body of the message (a plain-text and an HTML version).

text = """

text

{table}


text

"""

html = """
<html>
<head>
<style>
table, th, td {{ border: 1px solid black; border-collapse: collapse; text-align: center;}}
th, td {{ padding: 8px; }}


</style>
</head>

<body><p>text </p>
<br><br><br>
{table}
<br><br><br>
<p>Regards,</p>
<p>abc</p>
</body></html>
"""


col_list = list(df.columns.values)
data = df
# above line took every col inside csv as list
text = text.format(table=tabulate(data, headers=col_list, tablefmt="grid"))
html = html.format(table=tabulate(data, headers=col_list, tablefmt="html"))




msg = MIMEMultipart("alternative", None, [MIMEText(text), MIMEText(html,'html')])



# Send the message via local SMTP server.
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login("email@gmail.com", "pw")
server.sendmail(sender,recipients, msg.as_string())
server.quit()









share|improve this question





























    0














    I'm trying to send out an email using python's smptlib, which seems to be working fine except the subject key does not get attached. (image [1]: https://i.stack.imgur.com/XkpLh.png)



    I've looked at other solutions but none of them work for me. They are solving mostly for text based additions in the form of headers but my code involves sending a dataframe as a table which gets messed up when I try these solutions.



    Posts I've looked at:



    Python: "subject" not shown when sending email using smtplib module



    Subject line not coming in the smtp mail sent from python



    Python smtplib sendmail() not working with subject / body



    import smtplib
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from tabulate import tabulate

    sender = 'email@email.com'
    recipients = 'email@email.com'
    subject = "Test Email 1234"


    # Create message container - the correct MIME type is multipart/alternative.
    msg = MIMEMultipart()

    msg['From'] = sender
    msg['To'] = ", ".join(recipients)
    msg['Subject'] = subject

    # Create the body of the message (a plain-text and an HTML version).

    text = """

    text

    {table}


    text

    """

    html = """
    <html>
    <head>
    <style>
    table, th, td {{ border: 1px solid black; border-collapse: collapse; text-align: center;}}
    th, td {{ padding: 8px; }}


    </style>
    </head>

    <body><p>text </p>
    <br><br><br>
    {table}
    <br><br><br>
    <p>Regards,</p>
    <p>abc</p>
    </body></html>
    """


    col_list = list(df.columns.values)
    data = df
    # above line took every col inside csv as list
    text = text.format(table=tabulate(data, headers=col_list, tablefmt="grid"))
    html = html.format(table=tabulate(data, headers=col_list, tablefmt="html"))




    msg = MIMEMultipart("alternative", None, [MIMEText(text), MIMEText(html,'html')])



    # Send the message via local SMTP server.
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.ehlo()
    server.starttls()
    server.login("email@gmail.com", "pw")
    server.sendmail(sender,recipients, msg.as_string())
    server.quit()









    share|improve this question



























      0












      0








      0







      I'm trying to send out an email using python's smptlib, which seems to be working fine except the subject key does not get attached. (image [1]: https://i.stack.imgur.com/XkpLh.png)



      I've looked at other solutions but none of them work for me. They are solving mostly for text based additions in the form of headers but my code involves sending a dataframe as a table which gets messed up when I try these solutions.



      Posts I've looked at:



      Python: "subject" not shown when sending email using smtplib module



      Subject line not coming in the smtp mail sent from python



      Python smtplib sendmail() not working with subject / body



      import smtplib
      from email.mime.multipart import MIMEMultipart
      from email.mime.text import MIMEText
      from tabulate import tabulate

      sender = 'email@email.com'
      recipients = 'email@email.com'
      subject = "Test Email 1234"


      # Create message container - the correct MIME type is multipart/alternative.
      msg = MIMEMultipart()

      msg['From'] = sender
      msg['To'] = ", ".join(recipients)
      msg['Subject'] = subject

      # Create the body of the message (a plain-text and an HTML version).

      text = """

      text

      {table}


      text

      """

      html = """
      <html>
      <head>
      <style>
      table, th, td {{ border: 1px solid black; border-collapse: collapse; text-align: center;}}
      th, td {{ padding: 8px; }}


      </style>
      </head>

      <body><p>text </p>
      <br><br><br>
      {table}
      <br><br><br>
      <p>Regards,</p>
      <p>abc</p>
      </body></html>
      """


      col_list = list(df.columns.values)
      data = df
      # above line took every col inside csv as list
      text = text.format(table=tabulate(data, headers=col_list, tablefmt="grid"))
      html = html.format(table=tabulate(data, headers=col_list, tablefmt="html"))




      msg = MIMEMultipart("alternative", None, [MIMEText(text), MIMEText(html,'html')])



      # Send the message via local SMTP server.
      server = smtplib.SMTP('smtp.gmail.com', 587)
      server.ehlo()
      server.starttls()
      server.login("email@gmail.com", "pw")
      server.sendmail(sender,recipients, msg.as_string())
      server.quit()









      share|improve this question















      I'm trying to send out an email using python's smptlib, which seems to be working fine except the subject key does not get attached. (image [1]: https://i.stack.imgur.com/XkpLh.png)



      I've looked at other solutions but none of them work for me. They are solving mostly for text based additions in the form of headers but my code involves sending a dataframe as a table which gets messed up when I try these solutions.



      Posts I've looked at:



      Python: "subject" not shown when sending email using smtplib module



      Subject line not coming in the smtp mail sent from python



      Python smtplib sendmail() not working with subject / body



      import smtplib
      from email.mime.multipart import MIMEMultipart
      from email.mime.text import MIMEText
      from tabulate import tabulate

      sender = 'email@email.com'
      recipients = 'email@email.com'
      subject = "Test Email 1234"


      # Create message container - the correct MIME type is multipart/alternative.
      msg = MIMEMultipart()

      msg['From'] = sender
      msg['To'] = ", ".join(recipients)
      msg['Subject'] = subject

      # Create the body of the message (a plain-text and an HTML version).

      text = """

      text

      {table}


      text

      """

      html = """
      <html>
      <head>
      <style>
      table, th, td {{ border: 1px solid black; border-collapse: collapse; text-align: center;}}
      th, td {{ padding: 8px; }}


      </style>
      </head>

      <body><p>text </p>
      <br><br><br>
      {table}
      <br><br><br>
      <p>Regards,</p>
      <p>abc</p>
      </body></html>
      """


      col_list = list(df.columns.values)
      data = df
      # above line took every col inside csv as list
      text = text.format(table=tabulate(data, headers=col_list, tablefmt="grid"))
      html = html.format(table=tabulate(data, headers=col_list, tablefmt="html"))




      msg = MIMEMultipart("alternative", None, [MIMEText(text), MIMEText(html,'html')])



      # Send the message via local SMTP server.
      server = smtplib.SMTP('smtp.gmail.com', 587)
      server.ehlo()
      server.starttls()
      server.login("email@gmail.com", "pw")
      server.sendmail(sender,recipients, msg.as_string())
      server.quit()






      python smtplib






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Dec 27 '18 at 19:50









      DeepSpace

      37.1k44169




      37.1k44169










      asked Dec 27 '18 at 19:49









      Sam Siva

      81




      81
























          1 Answer
          1






          active

          oldest

          votes


















          0














          Your settings



          msg['From'] = sender
          msg['To'] = ", ".join(recipients)
          msg['Subject'] = subject


          will be overwritten, as soon as you do



          msg = MIMEMultipart("alternative", None, [MIMEText(text), MIMEText(html,'html')])


          later on.



          Just switch their order and remove the first msg = MIMEMultipart().






          share|improve this answer





















          • It worked!! Thanks for this solution! Didn't realize I was doing this :)
            – Sam Siva
            Dec 29 '18 at 1:48













          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53950156%2fmissing-subject-line-on-email-sent-using-smptlib%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          Your settings



          msg['From'] = sender
          msg['To'] = ", ".join(recipients)
          msg['Subject'] = subject


          will be overwritten, as soon as you do



          msg = MIMEMultipart("alternative", None, [MIMEText(text), MIMEText(html,'html')])


          later on.



          Just switch their order and remove the first msg = MIMEMultipart().






          share|improve this answer





















          • It worked!! Thanks for this solution! Didn't realize I was doing this :)
            – Sam Siva
            Dec 29 '18 at 1:48


















          0














          Your settings



          msg['From'] = sender
          msg['To'] = ", ".join(recipients)
          msg['Subject'] = subject


          will be overwritten, as soon as you do



          msg = MIMEMultipart("alternative", None, [MIMEText(text), MIMEText(html,'html')])


          later on.



          Just switch their order and remove the first msg = MIMEMultipart().






          share|improve this answer





















          • It worked!! Thanks for this solution! Didn't realize I was doing this :)
            – Sam Siva
            Dec 29 '18 at 1:48
















          0












          0








          0






          Your settings



          msg['From'] = sender
          msg['To'] = ", ".join(recipients)
          msg['Subject'] = subject


          will be overwritten, as soon as you do



          msg = MIMEMultipart("alternative", None, [MIMEText(text), MIMEText(html,'html')])


          later on.



          Just switch their order and remove the first msg = MIMEMultipart().






          share|improve this answer












          Your settings



          msg['From'] = sender
          msg['To'] = ", ".join(recipients)
          msg['Subject'] = subject


          will be overwritten, as soon as you do



          msg = MIMEMultipart("alternative", None, [MIMEText(text), MIMEText(html,'html')])


          later on.



          Just switch their order and remove the first msg = MIMEMultipart().







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Dec 27 '18 at 19:51









          Jayjayyy

          2,39221828




          2,39221828












          • It worked!! Thanks for this solution! Didn't realize I was doing this :)
            – Sam Siva
            Dec 29 '18 at 1:48




















          • It worked!! Thanks for this solution! Didn't realize I was doing this :)
            – Sam Siva
            Dec 29 '18 at 1:48


















          It worked!! Thanks for this solution! Didn't realize I was doing this :)
          – Sam Siva
          Dec 29 '18 at 1:48






          It worked!! Thanks for this solution! Didn't realize I was doing this :)
          – Sam Siva
          Dec 29 '18 at 1:48




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53950156%2fmissing-subject-line-on-email-sent-using-smptlib%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Monofisismo

          Angular Downloading a file using contenturl with Basic Authentication

          Olmecas