need guidance on sending emails with attachment with python.

K

krishnakant Mane

hello,
I am a bit confused.
I want to make a program that will take some data from a database and
make a string of text. and send it to the respective email id of a
person.
next I also want to send an attachment of a photo along with the email.
I will be required to make this program run on windows xp.
can some one guide me as to how I can achieve this?
what I will need on windows to send emails?
I believe yahoo, gmail, rediff and msn supports pop3 and smtp?
correct me if I am wrong on this.
secondly what library is used on windows to do this?
I know there must be python libraries to do this,
but apart from that I don't know what all I will need on my windows
machine to send emails to mostly yahoo, gmail and msn.
Please give me some idea about it.
Krishnakant.
 
B

Bernard

here's the function I've been using for while :p

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders

def sendMail(arrRecipients, sender, subject, message, files=[]):
""" Sends email with attachements """
# SMTP address
smtpserver = '' # provide a smtp here in string format
# authentification section
AUTHREQUIRED = 0 # if you need to use SMTP AUTH set to 1
smtpuser = '' # for SMTP AUTH, set SMTP username here
smtppass = '' # for SMTP AUTH, set SMTP password here

# Building the body of the email
mssg = MIMEMultipart()
mssg['From'] = sender
mssg['To'] = COMMASPACE.join(arrRecipients)
mssg['Date'] = formatdate(localtime=True)
mssg['Subject'] = subject
mssg.attach( MIMEText(message) )

# attachments
for file in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(file,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment;
filename="%s"' % os.path.basename(file))
mssg.attach(part)

session = smtplib.SMTP(smtpserver)
if AUTHREQUIRED:
session.login(smtpuser, smtppass)
smtpresult = session.sendmail(sender, arrRecipients,
mssg.as_string())

if smtpresult:
errstr = ""
for recip in smtpresult.keys():
errstr = """Could not delivery mail to: %s

Server said: %s
%s

%s""" % (recip, smtpresult[recip][0], smtpresult[recip][1], errstr)
raise smtplib.SMTPException, errstr

krishnakant Mane a écrit :
 
K

krishnakant Mane

here's the function I've been using for while :p
thanks indeed for the function Bernard.
I will have a windows machine up tomorrow. but do I need to install
any thing over and above the python libraries needed?
is it necessary that I install outlook or do I need to install any
server/ client on the machine where your function is to be used?
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders

def sendMail(arrRecipients, sender, subject, message, files=[]):
""" Sends email with attachements """
# SMTP address
smtpserver = '' # provide a smtp here in string format
# authentification section
AUTHREQUIRED = 0 # if you need to use SMTP AUTH set to 1
smtpuser = '' # for SMTP AUTH, set SMTP username here
smtppass = '' # for SMTP AUTH, set SMTP password here

# Building the body of the email
mssg = MIMEMultipart()
mssg['From'] = sender
mssg['To'] = COMMASPACE.join(arrRecipients)
mssg['Date'] = formatdate(localtime=True)
mssg['Subject'] = subject
mssg.attach( MIMEText(message) )

# attachments
for file in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(file,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment;
filename="%s"' % os.path.basename(file))
mssg.attach(part)

session = smtplib.SMTP(smtpserver)
if AUTHREQUIRED:
session.login(smtpuser, smtppass)
smtpresult = session.sendmail(sender, arrRecipients,
mssg.as_string())

if smtpresult:
errstr = ""
for recip in smtpresult.keys():
errstr = """Could not delivery mail to: %s

Server said: %s
%s

%s""" % (recip, smtpresult[recip][0], smtpresult[recip][1], errstr)
raise smtplib.SMTPException, errstr

krishnakant Mane a écrit :
hello,
I am a bit confused.
I want to make a program that will take some data from a database and
make a string of text. and send it to the respective email id of a
person.
next I also want to send an attachment of a photo along with the email.
I will be required to make this program run on windows xp.
can some one guide me as to how I can achieve this?
what I will need on windows to send emails?
I believe yahoo, gmail, rediff and msn supports pop3 and smtp?
correct me if I am wrong on this.
secondly what library is used on windows to do this?
I know there must be python libraries to do this,
but apart from that I don't know what all I will need on my windows
machine to send emails to mostly yahoo, gmail and msn.
Please give me some idea about it.
Krishnakant.
 
R

Richard Charts

krishnakant said:
here's the function I've been using for while :p
thanks indeed for the function Bernard.
I will have a windows machine up tomorrow. but do I need to install
any thing over and above the python libraries needed?
is it necessary that I install outlook or do I need to install any
server/ client on the machine where your function is to be used?
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders

def sendMail(arrRecipients, sender, subject, message, files=[]):
""" Sends email with attachements """
# SMTP address
smtpserver = '' # provide a smtp here in string format
# authentification section
AUTHREQUIRED = 0 # if you need to use SMTP AUTH set to 1
smtpuser = '' # for SMTP AUTH, set SMTP username here
smtppass = '' # for SMTP AUTH, set SMTP password here

# Building the body of the email
mssg = MIMEMultipart()
mssg['From'] = sender
mssg['To'] = COMMASPACE.join(arrRecipients)
mssg['Date'] = formatdate(localtime=True)
mssg['Subject'] = subject
mssg.attach( MIMEText(message) )

# attachments
for file in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(file,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment;
filename="%s"' % os.path.basename(file))
mssg.attach(part)

session = smtplib.SMTP(smtpserver)
if AUTHREQUIRED:
session.login(smtpuser, smtppass)
smtpresult = session.sendmail(sender, arrRecipients,
mssg.as_string())

if smtpresult:
errstr = ""
for recip in smtpresult.keys():
errstr = """Could not delivery mail to: %s

Server said: %s
%s

%s""" % (recip, smtpresult[recip][0], smtpresult[recip][1], errstr)
raise smtplib.SMTPException, errstr

krishnakant Mane a écrit :
hello,
I am a bit confused.
I want to make a program that will take some data from a database and
make a string of text. and send it to the respective email id of a
person.
next I also want to send an attachment of a photo along with the email.
I will be required to make this program run on windows xp.
can some one guide me as to how I can achieve this?
what I will need on windows to send emails?
I believe yahoo, gmail, rediff and msn supports pop3 and smtp?
correct me if I am wrong on this.
secondly what library is used on windows to do this?
I know there must be python libraries to do this,
but apart from that I don't know what all I will need on my windows
machine to send emails to mostly yahoo, gmail and msn.
Please give me some idea about it.
Krishnakant.

You will need some working email account.
It could be a server on your local machine or it could be a gmail
account.
If you don't have an email account that you want to send from, then you
will have to either obtain one or create your own server.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,981
Messages
2,570,187
Members
46,731
Latest member
MarcyGipso

Latest Threads

Top