Including a Variable In the HTML Tags When Sending An Email

2020-08-08 Thread sammy . jackson987
Hello all

I was hoping someone could help me with the following coding problem.

I am trying to send an email where the body of the email is taken from a data 
frame, which i have managed to do.

However i want to start the email by saying Hi Name, where Name is a variable 
that contains the person's name to whom i am sending the email to - This is the 
bit i cannot get working.

The code i have so far is as follows:-

[python]
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
 
mail=smtplib.SMTP('smtp.gmail.com', 123) 
mail.ehlo() 
mail.starttls()  
mail.login("Email","Pwd") 
 
From_Address = ["From_Email"]
To_Address = [Report_Data_Frame.iloc[0,10]]
CC_Address = ["CC_Email", "CC_Email", "CC_Email"]
Subject_Email = "Email_Subject" 
Body = Email_Body_Data_Frame
Name = "Tom"
 
   
html = """\

   
  
  Hi Name Goes HERE!!!
  
  
  TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT 
  
   
  
   
{0}
 
  
   
  
   
 TEXT TEXT 
 TEXT TEXT 
 TEXT TEXT 
 TEXT TEXT 
  


 """.format(Body.to_html())
 
msg = MIMEMultipart()
msg['From'] = ', '.join(From_Address)
msg['To'] = ', '.join(To_Address)
msg['Cc'] = ', '.join(CC_Address)
msg['Subject'] = Subject_Email
 
message = MIMEText(html,'html')
msg.attach(message)
mail.sendmail(From_Address, (To_Address + CC_Address), msg.as_string())
[/python]

In this case the variable Name is Tom and i want to include Tom in the email.

Can anyone help?

Still a newbie; approx 3 weeks playing with Python (cut and past most of this 
code)

Any help will be greatly appericated.

Thank you.
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Including a Variable In the HTML Tags When Sending An Email

2020-08-08 Thread sammy . jackson987
On Saturday, August 8, 2020 at 3:46:04 PM UTC+1, Richard Damon wrote:
> All the text that you want the user to see needs to be in the  of
> the message.  is for metadata and stuff to setup some formatting.
> 
> You might want to study up a bit on HTML formatting too. Depending on
> what the data frame is like, you may need to enclose it in some sort of
> container, like a 
> 
> On 8/8/20 10:29 AM, sammy.jackson...@gmail.com wrote:
> > Hello all
> >
> > I was hoping someone could help me with the following coding problem.
> >
> > I am trying to send an email where the body of the email is taken from a 
> > data frame, which i have managed to do.
> >
> > However i want to start the email by saying Hi Name, where Name is a 
> > variable that contains the person's name to whom i am sending the email to 
> > - This is the bit i cannot get working.
> >
> > The code i have so far is as follows:-
> >
> > [python]
> > import smtplib
> > from email.mime.multipart import MIMEMultipart
> > from email.mime.text import MIMEText
> >  
> > mail=smtplib.SMTP('smtp.gmail.com', 123) 
> > mail.ehlo() 
> > mail.starttls()  
> > mail.login("Email","Pwd") 
> >  
> > From_Address = ["From_Email"]
> > To_Address = [Report_Data_Frame.iloc[0,10]]
> > CC_Address = ["CC_Email", "CC_Email", "CC_Email"]
> > Subject_Email = "Email_Subject" 
> > Body = Email_Body_Data_Frame
> > Name = "Tom"
> >  
> >
> > html = """\
> > 
> >
> >   
> >   Hi Name Goes HERE!!!
> >   
> >   
> >   TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT 
> >   
> >
> >   
> >
> > {0}
> >  
> >   
> >
> >   
> >
> >  TEXT TEXT 
> >  TEXT TEXT 
> >  TEXT TEXT 
> >  TEXT TEXT 
> >   
> > 
> > 
> >  """.format(Body.to_html())
> >  
> > msg = MIMEMultipart()
> > msg['From'] = ', '.join(From_Address)
> > msg['To'] = ', '.join(To_Address)
> > msg['Cc'] = ', '.join(CC_Address)
> > msg['Subject'] = Subject_Email
> >  
> > message = MIMEText(html,'html')
> > msg.attach(message)
> > mail.sendmail(From_Address, (To_Address + CC_Address), msg.as_string())
> > [/python]
> >
> > In this case the variable Name is Tom and i want to include Tom in the 
> > email.
> >
> > Can anyone help?
> >
> > Still a newbie; approx 3 weeks playing with Python (cut and past most of 
> > this code)
> >
> > Any help will be greatly appericated.
> >
> > Thank you.
> 
> 
> -- 
> Richard Damon

Thank you Richard for your response.

I have moved all the text i want the user to see into the body of the email.

I still cannot get my email to display the name.

Name = "Tim"

How would i include this variable in my HTML/Python code?

Any ideas?

Thank you.

-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Including a Variable In the HTML Tags When Sending An Email

2020-08-08 Thread sammy . jackson987
On Saturday, August 8, 2020 at 5:03:07 PM UTC+1, MRAB wrote:
> On 2020-08-08 15:58, sammy.jackson...@gmail.com wrote:
> > On Saturday, August 8, 2020 at 3:46:04 PM UTC+1, Richard Damon wrote:
> >> All the text that you want the user to see needs to be in the  of
> >> the message.  is for metadata and stuff to setup some formatting.
> >> 
> >> You might want to study up a bit on HTML formatting too. Depending on
> >> what the data frame is like, you may need to enclose it in some sort of
> >> container, like a 
> >> 
> >> On 8/8/20 10:29 AM, sammy.jackson...@gmail.com wrote:
> >> > Hello all
> >> >
> >> > I was hoping someone could help me with the following coding problem.
> >> >
> >> > I am trying to send an email where the body of the email is taken from a 
> >> > data frame, which i have managed to do.
> >> >
> >> > However i want to start the email by saying Hi Name, where Name is a 
> >> > variable that contains the person's name to whom i am sending the email 
> >> > to - This is the bit i cannot get working.
> >> >
> >> > The code i have so far is as follows:-
> >> >
> >> > [python]
> >> > import smtplib
> >> > from email.mime.multipart import MIMEMultipart
> >> > from email.mime.text import MIMEText
> >> >  
> >> > mail=smtplib.SMTP('smtp.gmail.com', 123) 
> >> > mail.ehlo() 
> >> > mail.starttls()  
> >> > mail.login("Email","Pwd") 
> >> >  
> >> > From_Address = ["From_Email"]
> >> > To_Address = [Report_Data_Frame.iloc[0,10]]
> >> > CC_Address = ["CC_Email", "CC_Email", "CC_Email"]
> >> > Subject_Email = "Email_Subject" 
> >> > Body = Email_Body_Data_Frame
> >> > Name = "Tom"
> >> >  
> >> >
> >> > html = """\
> >> > 
> >> >
> >> >   
> >> >   Hi Name Goes HERE!!!
> >> >   
> >> >   
> >> >   TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT 
> >> >   
> >> >
> >> >   
> >> >
> >> > {0}
> >> >  
> >> >   
> >> >
> >> >   
> >> >
> >> >  TEXT TEXT 
> >> >  TEXT TEXT 
> >> >  TEXT TEXT 
> >> >  TEXT TEXT 
> >> >   
> >> > 
> >> > 
> >> >  """.format(Body.to_html())
> >> >  
> >> > msg = MIMEMultipart()
> >> > msg['From'] = ', '.join(From_Address)
> >> > msg['To'] = ', '.join(To_Address)
> >> > msg['Cc'] = ', '.join(CC_Address)
> >> > msg['Subject'] = Subject_Email
> >> >  
> >> > message = MIMEText(html,'html')
> >> > msg.attach(message)
> >> > mail.sendmail(From_Address, (To_Address + CC_Address), msg.as_string())
> >> > [/python]
> >> >
> >> > In this case the variable Name is Tom and i want to include Tom in the 
> >> > email.
> >> >
> >> > Can anyone help?
> >> >
> >> > Still a newbie; approx 3 weeks playing with Python (cut and past most of 
> >> > this code)
> >> >
> >> > Any help will be greatly appericated.
> >> >
> >> > Thank you.
> >> 
> >> 
> >> -- 
> >> Richard Damon
> > 
> > Thank you Richard for your response.
> > 
> > I have moved all the text i want the user to see into the body of the email.
> > 
> > I still cannot get my email to display the name.
> > 
> > Name = "Tim"
> > 
> > How would i include this variable in my HTML/Python code?
> > 
> > Any ideas?
> > 
> > Thank you.
> > 
> I can't see why you're having a problem putting the name into the HTML 
> when you're already managing to put the text of the dataframe into it...

Hi Richard

The issue i am am having is that the Name is a variable stored as a str and my 
data in my dataframe is stored as a variable of type dataframe.

If i use place holders i.e. {0} and {1} where {0} is the name and {1} is the 
dataframe i get an error for the following line of code:-
.format((Name,Body).to_html()) which states 'tuple' object has no attribute 
'to_html'.

My amended code look like:-

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
 
mail=smtplib.SMTP('smtp.gmail.com', 123)
mail.ehlo()
mail.starttls()  
mail.login("Email","Pwd")
 
From_Address = ["From_Email"]
To_Address = [Report_Data_Frame.iloc[0,10]]
CC_Address = ["CC_Email", "CC_Email", "CC_Email"]
Subject_Email = "Email_Subject"


Name = "Tom"
Body = Email_Body_Data_Frame


html = """\

   
  
  
  Hi {0}
  
  
  TEXT TEXT TEXT TEXT TEXT
   
  
  {1}
  
  TEXT TEXT TEXT TEXT TEXT 
 
  
  
  


 """.format((Name,Body).to_html())

If i convert the dataframe to a string then it messes up all the columns.

Any ideas?

Thanks











-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Including a Variable In the HTML Tags When Sending An Email

2020-08-09 Thread sammy . jackson987
On Sunday, August 9, 2020 at 1:32:30 AM UTC+1, Richard Damon wrote:
> On 8/8/20 8:03 PM, sammy.jackson...@gmail.com wrote:
> > If i use place holders i.e. {0} and {1} where {0} is the name and {1} is 
> > the dataframe i get an error for the following line of code:-
> > .format((Name,Body).to_html()) which states 'tuple' object has no attribute 
> > 'to_html'.
> 
> I would do it as
> 
> .format(Name, Body.to_html()) if your names really are just straight
> letters.
> 
> If they might have some funny characters that need html handling, you
> could do:
> 
> import html
> 
> 
> .format(html.escape(Name), Body.to_html())
> 
> 
> Note that different types need to be treated differently to get them
> into clean html.
> 
> 
> -- 
> Richard Damon


Richard I love you.

The following change you recommended worked. 


-- 
https://mail.python.org/mailman/listinfo/python-list