belligerentbeagle
belligerentbeagle

Reputation: 39

Populate other email fields like Subject in Python mail function

I have tested this piece of code and it sends the email successfully, it tends to leave the subject fields, cc and bcc fields empty as seen in the photo.

import smtplib

gmail_user = '[email protected]'  
gmail_password = 'password'



sent_from = '[email protected]'  
to = ['[email protected]']  
subject = 'OMG Super Important Message'  
body = "Hey, what's up?\n\n- You"

email_text = """\
From: %s  
To: %s  
Subject: %s

%s
""" % (sent_from, ", ".join(to), subject, body)

try:  
    server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
    print("establish connection successful")
    server.ehlo()
    print("identification successful")
    server.login(gmail_user, gmail_password)
    print("login successful")
    server.sendmail(sent_from, to, email_text)
    print("send mail successful")
    server.close()
    print('Email sent!')
except:  
    print('Something went wrong...')

Does anyone know how I can fill them up through this script?

Screenshot of received mail

Upvotes: 0

Views: 248

Answers (2)

Alejandro
Alejandro

Reputation: 11

If you try to open the source of an email you will see something like this:

   Received: from ************.net ([***.**.2.17]) by
   *****.****.net ([**.***.224.162]) with mapi id **.03.****.***;
   Mon, 22 May 2017 09:14:59 +0200
   From: *FROMEMAIL* <******@***.com>
   To: *TOEMAIL* <********@***.com>
   CC: *CCEMAIL* <********@*****.com>
   Subject: E-mail - 150633**0686_****.pdf
   ...

That is the header of the email, so if you try something like this:

import smtplib

gmail_user = '[email protected]'  
gmail_password = 'password'



sent_from = '[email protected]'  
to = ['[email protected]']  
subject = 'OMG Super Important Message'  
body = "Hey, what's up?\n\n- You"
cc = "****@***.com"
bcc = "******@*****.com"
email_text = """\
From: %s  
To: %s
CC: %s
BCC: %s
Subject: %s

%s
""" % (sent_from, ", ".join(to), cc, bcc,subject, body)

try:  
    server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
    print("establish connection successful")
    server.ehlo()
    print("identification successful")
    server.login(gmail_user, gmail_password)
    print("login successful")
    server.sendmail(sent_from, to, email_text)
    print("send mail successful")
    server.close()
    print('Email sent!')
except:  
    print('Something went wrong...')

I think it will work

Upvotes: 0

BossaNova
BossaNova

Reputation: 1527

For the email subject - there is a specific format to the input arg you provide to server.sendmail that should work. Could you try:

subject = 'This is the email subject'
text = 'This is the email body'
message = "Subject: {}\n\n{}".format(subject, text)
server.sendmail(sender, recipient, message)

Upvotes: 1

Related Questions