2014-04-19 9 views
11

का उपयोग कर .csv अनुलग्नक के साथ एक ईमेल कैसे भेजूं ठीक है, मुझे पता है कि इसे संबोधित करने के कुछ प्रश्न हैं, लेकिन मुझे इसे ठीक से काम करने का कोई तरीका नहीं मिल रहा है। मुझे लगता है कि यह नीचे कोड के रूप में सरल है, लेकिन यह मेरी फाइल संलग्न नहीं करता है। किसी भी तरह की सहायता का स्वागत किया जाएगा। मैं पाइथन के लिए भी बहुत नया हूँ। क्या कोई मेल मॉड्यूल है जो मुझे फ़ंक्शन को काम करने के लिए आयात करना चाहिए?मैं Python

import smtplib 
fromaddr = "[email protected] 
toaddrs = "[email protected] 

msg = "help I cannot send an attachment to save my life" 
attach = ("csvonDesktp.csv") 

username = user 
password = password 

server = smtplib.SMTP('smtp.gmail.com:587') 
server.starttls() 
server.login(username,password) 
server.sendmail(fromaddr, toaddrs, msg, attach) 
server.quit() 
+2

http://stackoverflow.com/questions/9541837/attach-a-txt-file-in-python- smtplib – Toote

उत्तर

44

उपयुक्त एमआईएम प्रकारों के साथ एक मल्टीपार्ट ईमेल भेजें।

https://docs.python.org/2/library/email-examples.html

तो संभव कुछ इस तरह (मैं इस परीक्षण किया):

import smtplib 
import mimetypes 
from email.mime.multipart import MIMEMultipart 
from email import encoders 
from email.message import Message 
from email.mime.audio import MIMEAudio 
from email.mime.base import MIMEBase 
from email.mime.image import MIMEImage 
from email.mime.text import MIMEText 

emailfrom = "[email protected]" 
emailto = "[email protected]" 
fileToSend = "hi.csv" 
username = "user" 
password = "password" 

msg = MIMEMultipart() 
msg["From"] = emailfrom 
msg["To"] = emailto 
msg["Subject"] = "help I cannot send an attachment to save my life" 
msg.preamble = "help I cannot send an attachment to save my life" 

ctype, encoding = mimetypes.guess_type(fileToSend) 
if ctype is None or encoding is not None: 
    ctype = "application/octet-stream" 

maintype, subtype = ctype.split("/", 1) 

if maintype == "text": 
    fp = open(fileToSend) 
    # Note: we should handle calculating the charset 
    attachment = MIMEText(fp.read(), _subtype=subtype) 
    fp.close() 
elif maintype == "image": 
    fp = open(fileToSend, "rb") 
    attachment = MIMEImage(fp.read(), _subtype=subtype) 
    fp.close() 
elif maintype == "audio": 
    fp = open(fileToSend, "rb") 
    attachment = MIMEAudio(fp.read(), _subtype=subtype) 
    fp.close() 
else: 
    fp = open(fileToSend, "rb") 
    attachment = MIMEBase(maintype, subtype) 
    attachment.set_payload(fp.read()) 
    fp.close() 
    encoders.encode_base64(attachment) 
attachment.add_header("Content-Disposition", "attachment", filename=fileToSend) 
msg.attach(attachment) 

server = smtplib.SMTP("smtp.gmail.com:587") 
server.starttls() 
server.login(username,password) 
server.sendmail(emailfrom, emailto, msg.as_string()) 
server.quit() 
+0

जेमी, यह बहुत अच्छा है! आपके सहयोग के लिए धन्यवाद! – JDS

+0

उत्कृष्ट नमूना। मुझे यह पसंद है कि आपने इसे सामान्य बना दिया और पुस्तकालयों का उपयोग करके हार्ड-कोडिंग के बजाय नकल प्राप्त करने के लिए। –

5

complete example in the Python documentation है। मैं यहां प्रासंगिक हिस्सों की प्रतिलिपि बना सकता हूं और पेस्ट कर सकता हूं लेकिन पूरा पृष्ठ बहुत लंबा नहीं है, इसलिए यदि आप जाते हैं और वहां पर नजर डालें तो यह बेहतर होगा।