2015-05-05 19 views
5

Yerel dosyaları bir e-postaya nasıl ekleyeceğiniz konusunda birçok örnek buldum. Ne yapmak istediğim, e-postaya nesne gibi bir dosya eklemektir. Neden soruyorsun? bu yüzden dosyaları temizlemeyle uğraşmak zorunda değilim. Aşağıda benim kodum ve hatam var. çok hala işe almak için yönetilen değil Googling sonra herhangi bir yardım büyük takdir :)e-posta adresine nesne ekleme python 3

def email_sup_teams(team_name, contact_list, file_attachemnt): 
    message_list = [] 
    for jobs in file_attachemnt: 
     for k, v in jobs.items(): 
      message_list.append(v + ',') 
    attachment_text = "\n".join(message_list) 
    print(type(attachment_text)) 

    msg = MIMEText(' Failed jobs list. Please see attachment') 
    msg['Subject'] = 'Not run Jobs for ' + team_name 
    msg['From'] = '[email protected]' 
    msg['To'] = '[email protected]' 

    f = io.StringIO(attachment_text) 
    attachment = MIMEText(f.read()) 
    attachment.add_header('Content-Disposition', 'attachment', filename='test_attach')   
    msg.attach(attachment) 

    s = smtplib.SMTP('smlsmtp') 
    s.sendmail(msg['From'], msg['To'], msg.as_string()) 
    s.quit() 
    print('\n' + team_name + ' Email Sent') 

hatası: Ben okumalıymışım

<class 'str'> 
Traceback (most recent call last): 
    File "queue_cleaner_main.py", line 85, in <module> 
    sys.exit(main()) 
    File "queue_cleaner_main.py", line 82, in main 
    queue_cleaner_functions.email_sup_teams(t, team_members_emails, attachment_file_of_jobs) 
    File "D:\oppssup\old_job\queue_cleaner_functions.py", line 179, in email_sup_teams 
    msg.attach(attachment) 
    File "C:\Python34\lib\email\mime\nonmultipart.py", line 22, in attach 
    'Cannot attach additional subparts to non-multipart/*') 
email.errors.MultipartConversionError: Cannot attach additional subparts to non-multipart/* 

cevap

5

çıkıyor

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

daha yakından. Oldukça eminim çünkü e-postamı oluşturmak için yalnızca 1 MIME türü nesne kullanıyordum ama birden çok MIME nesnesi eklemeye çalışıyordum. Temelde işe almak için aşağıdaki kodu kullandım. Mutlu günler!

def email_sup_teams(team_name, contact_list, file_attachemnt): 
    message_list = [] 
    for jobs in file_attachemnt: 
     for k, v in jobs.items(): 
      message_list.append(v + ',') 
    attachment_text = "\n".join(message_list) 
    print(type(attachment_text)) 
    # Create the container (outer) email message. 
    msg = MIMEMultipart() 
    #msg = MIMEText(' Failed jobs list. Please see attachment') 
    msg['Subject'] = 'Not run Jobs for ' + team_name 
    msg['From'] = '[email protected]' 
    msg['To'] = '[email protected]' 
    msg.preamble = 'Failed jobs list. Please see attachment' 
    f = io.StringIO(attachment_text) 
    attachment = MIMEText(f.getvalue()) 
    attachment.add_header('Content-Disposition', 'attachment', filename='jobs_not_run.xls')   
    msg.attach(attachment) 

    s = smtplib.SMTP('smlsmtp') 
    s.sendmail(msg['From'], msg['To'], msg.as_string()) 
    s.quit() 
    print('\n' + team_name + ' Email Sent')