Hi NG,

I am using email module for creating mails with attachment (and then sending via smtplib).

If the name of the attachment file is longer than about 60 characters the filename is wrapped in the Content-Disposition header:

Content-Disposition: attachment;
        filename="This is a sample file with a very long filename
        0123456789.zip"


This leads to a wrong attachment filename in email clients - the space after "filename" is not shown or the client displays a special character (the linbreak or tab before 0123456789.zip).


If I use a standard email client and generate a mail with the same attachment, it creates the following header:

Content-Disposition: attachment;
 filename="This is a sample file with a very long filename 0123456789.zip"

(no line break)

Here is my code:


msg = MIMEMultipart() msg['Subject'] = 'Test' msg['From'] = '[EMAIL PROTECTED]' msg['To'] = '[EMAIL PROTECTED]' msg.epilogue = ''

    # Add body
    part_body = MIMEText('blabla')
    msg.attach(part_body)

    # Add attachment
    file = 'This is a sample file with a very long filename 0123456789.zip'
    fp = open(file, 'rb')
    part_att = MIMEBase('application','zip')
    part_att.set_payload(fp.read())
    fp.close()
    part_att.add_header('Content-Disposition', 'attachment', filename=file)

    # Encode the payload using Base64
    email.Encoders.encode_base64(part_att)

    msg.attach(part_att)


Is it possible to prevent the linebreak?

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

Reply via email to