Sending a PDF document as a file attachment

Hi,
I have encountered the following problem:
When attaching a pdf document to an email and sending it via Javamail, the resulting PDF document on the other end (i.e. when opened via an email client, such as Outlook) is corrupted and cannot be opened in Acrobar Reader. When doing a side by side comparison with the original file, the emailed document is 1 byte larger than the original (which can possibly cause the "corrupted file error").
Now, this is happening in my company's application and is happening to only one of our customers. This does not happen to 99.9% of them nor can we duplicate it. In addition, it does not happen to all PDF documents, only a few of them.
I have also ensured that our client has the latest version of Javamail and the activation framework jar files.
One thing I have noticed is that the documents are "encoded" as 7bit. This makes sense since the Javadocs explain that if a file is "US-ASCII only" it will be encoded as 7bit, otherwise it will be encoded as base64. Many of our PDF documents are text only.
My side question is, is there a way to force it to encode it as base64 for all pdf documents and would this help?
My main question is: Does anyone know what is happening and what I can do about it?
Anyway, here is the code fragment that does the attachment:
                      for (int i = 0; i < attachments.length; i++)
                         messageBodyPart = new MimeBodyPart();
                         FileDataSource fileDataSource = new FileDataSource(attachments);
                         messageBodyPart.setDataHandler(new DataHandler(fileDataSource));
                         String fileName = attachments[i].getName();
                         messageBodyPart.setFileName(fileName);
                         multipart.addBodyPart(messageBodyPart);
Where attachments is a File array.

Only one of your customers. And they can only handle base-64 encoding and not 7-bit encoding of mail messages.
We had the same thing. We send thousands of files every week using JavaMail, most of them PDFs and other files that are all text. Just one of our customers had some cruddy mail handler they had written themselves, or something like that, and it only liked base-64 encoded messages. This was fine for them because MS Outlook automatically does that for attachments regardless, and everybody was using Outlook to send them files. Except us. So we had to set up a hokey scheme where we would send their messages to a local MS Exchange address and have them auto-forwarded to the customer's address. (I couldn't find any way to control base-64 versus 7-bit encoding.)
But that customer wasn't using Outlook to read the messages, so maybe that isn't the problem. We also had a supplier (fortunately an ex-supplier now) who we used to send zip files to (from Outlook even) and their mail server would insert extra line breaks into the attachment, thus making the zip file corrupted. Maybe something like that is happening.
We had another customer who used Lotus Notes as their mail server, and it couldn't deal with our plain ordinary PDFs either. But I think Notes must have had some bug fixes because I haven't heard about that problem lately.
Good luck.

Similar Messages

  • I'm trying to send a pages document as an email attachment to pc users.  They can't access the document.

    I'm trying to send a pages document as an email attachment to pc users.  They can't access the document.  When I try go to the "file" menu, there is no "save as" option.

    Hi Shelly,
    Command-P (Print)
    In the Print dialogue, click the PDF button at lower left, choose Mail PDF
    The result should be a new email document with the pdf file attached.
    Address and send.
    The procedure applies to any document which may be printed, not just Pages documents.
    Regards,
    Barry

  • How do I get a PDF document put into an attachment form that I can drag to an e-mail.  Usually I get an icon showing an spiral note book which then becomes an attachment when I drag it to the e-mail, but occasionally it stays in PDF and prints out on the

    How do I get a PDF document put into an attachment form that I can drag to an e-mail.  Usually I get an icon showing an spiral note book which then becomes an attachment when I drag it to the e-mail, but occasionally it stays in PDF and prints out on the e-mail.  What have I done differently?

    Thanks again for the detailed instructions Srini!
    And I really hate to be a pest . . . but . . .
    Using your example and not modifying it, I get the e-mail form filled out correctly and the pdf attached, however, I'm not prompted to sign it.
    Any more clues?

  • How to send a PDF document to a FAX Server in SAP ? - Urgent

    Dear All
    Can you please provide inputs as to how one can send a PDF document to a FAX server . In my SCOT i have config done for FAX . I am able to send PDF document via e-mail . Wonder how to use FM  'CONVERT_OTF_AND_FAX' for sending fax ? There is a parameter called FAXOPTIONS in export parameter which we need to pass . What all we need to pass in here ? any idea or some other way here?
    Best Regards
    Shovit

    check this sample program
    BCS_EXAMPLE_2
    Regards
    Raja

  • Acrobat 9: Error when PDF form submit with file attachment

    Hi all,
    Hope you can provide some help with my PDF form submit issue. I am getting this error "There is no PDDoc associated with this CosDoc." in Acrobat 9 (Reader and Pro) when I try to submit a PDF form with a file attachment field (the file is specified). The same PDF form works fine in Acrobat 7 or 8 (Reader and Pro) with file attachment.
    If no file attachment is specified (user did not select a file) then the PDF form submits fine in acrobat 9. The form data submission format is in FDF. Same problem if I change to XFDF.
    There are no differences in the problem if the PDF form is created in Acrobat 7 or Acrobat 9, the same submit issue exists in Acrobat 9 but not in the older Acrobat versions.
    Is this a known issue and are there any workarounds/solutions?
    Thanks.

    Sounds like a bug to me. Please report it: http://www.adobe.com/support/feature.html
    George

  • Mail Adapter: How to send data as a simple text file attachment?

    Hi All
    I have a proxy to file scenario, where i write data to a text file.
    Now, i need to have a second receiver. I have to send an email, with the above file as an attachment, to this receiver.
    How can i do this?
    How can i send the data as a text file attachment to the receiver?
    Many Thanks
    Chandra

    Hi,
    To send the message to the second receiver you need to have:
    1) Necessary mail message format (can download from service marketplace)
    2) Receiver mail communication channel.
    3) Create the necessary Configuration Objects .... Receiver Determination, Interface Determination, Receiver Agreement.
    3) You can do a XSLT mapping (if required)....if no complex logic is needed then you can do a simple Message mapping.
    4) In the receiver CC make sure that you check the Adapter Specific Message Attribute checkbox.
    For more info you can refer my answer in this thread:
    Re: xml in mail
    Also refer the blog:
    /people/michal.krawczyk2/blog/2005/11/23/xi-html-e-mails-from-the-receiver-mail-adapter
    Regards,
    Abhishek.

  • When I send an email with a photoshop file attached, the recipient receives it "flattened". How do I change this?

    when I send an email with a photoshop file attached, the recipient receives it "flattened". How do I change this?

    I've sent psd files to various people without issues, however you might want to try something like www.filedropper.com to make sure it's not that they can't open your version of psd file.
    You may also want to zip the file using the built in archiving software, simply right click (or control click) the file and choose Compress ....,  then you can email it to the person as a compressed archive.  That should preserve all the aspects of the file properly without any modifications.

  • Can any one please send the pdf document TEP12

    Hi Portal experts,
    Can any one please send the pdf document TEP12?
    Thanks,
    Jitender

    >
    jitender d wrote:
    > Hi Portal experts,
    > Can any one please send the pdf document TEP12?
    >
    > Thanks,
    > Jitender
    You are not allowed to ask for any Document like this
    Reported......
    Faisal

  • Sending a PDF document as an attachment

    Hi,
    I have a PDF document which I need to send as an attachment.
    The process behind this is, as soon as a Sales Order is created, a PDF document( this is a static one) needs to be sent to the Customer.
    Anyone has idea of how this can be achieved.
    Thanks,
    Prasanna

    Please see this post. You can find more links in this.
    Send PDF by email
    Also find some examples here
    Sending PDF to SAP Outbox - Urgent
    You can find a weblog from Thomas Jung explaining the step by step configuration for sending mail from ABAP.
    /people/thomas.jung3/blog/2004/09/07/sending-e-mail-from-abap--version-46d-and-lower--api-interface
    Message was edited by: Vinod C

  • Sending a PDF document to printer directly

    Hi,
    can any one help me in printing a PDF file stored in the system to be sent to printer from abap code.
    thanks in advance.

    hi here is the program to print the pdf document directly..
    REPORT  zspooltopdf.
    PARAMETER: p_email1 LIKE somlreci1-receiver,
                         p_sender LIKE somlreci1-receiver,
                         p_delspl  AS CHECKBOX.
    *DATA DECLARATION
    DATA: gd_recsize TYPE i.
    Spool IDs
    TYPES: BEGIN OF t_tbtcp.
            INCLUDE STRUCTURE tbtcp.
    TYPES: END OF t_tbtcp.
    DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
          wa_tbtcp TYPE t_tbtcp.
    Job Runtime Parameters
    DATA: gd_eventid LIKE tbtcm-eventid,
          gd_eventparm LIKE tbtcm-eventparm,
          gd_external_program_active LIKE tbtcm-xpgactive,
          gd_jobcount LIKE tbtcm-jobcount,
          gd_jobname LIKE tbtcm-jobname,
          gd_stepcount LIKE tbtcm-stepcount,
          gd_error    TYPE sy-subrc,
          gd_reciever TYPE sy-subrc.
    DATA:  w_recsize TYPE i.
    DATA: gd_subject   LIKE sodocchgi1-obj_descr,
          it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          gd_sender_type     LIKE soextreci1-adr_typ,
          gd_attachment_desc TYPE so_obj_nam,
          gd_attachment_name TYPE so_obj_des.
    Spool to PDF conversions
    DATA: gd_spool_nr LIKE tsp01-rqident,
          gd_destination LIKE rlgrap-filename,
          gd_bytecount LIKE tst01-dsize,
          gd_buffer TYPE string.
    Binary store for PDF
    DATA: BEGIN OF it_pdf_output OCCURS 0.
            INCLUDE STRUCTURE tline.
    DATA: END OF it_pdf_output.
    CONSTANTS: c_dev LIKE  sy-sysid VALUE 'DEV',
               c_no(1)     TYPE c   VALUE ' ',
               c_device(4) TYPE c   VALUE 'LOCL'.
    *START-OF-SELECTION.
    START-OF-SELECTION.
    Write statement to represent report output. Spool request is created
    if write statement is executed in background. This could also be an
    ALV grid which would be converted to PDF without any extra effort
      WRITE 'Hello World'.
      new-page.
      commit work.
      new-page print off.
      IF sy-batch EQ 'X'.
        PERFORM get_job_details.
        PERFORM obtain_spool_id.
    Alternative way could be to submit another program and store spool
    id into memory, will be stored in sy-spono.
    *submit ZSPOOLTOPDF2
           to sap-spool
           spool parameters   %_print
           archive parameters %_print
           without spool dynpro
           and return.
    Get spool id from program called above
    IMPORT w_spool_nr FROM MEMORY ID 'SPOOLTOPDF'.
        PERFORM convert_spool_to_pdf.
        PERFORM process_email.
        if p_delspl EQ 'X'.
          PERFORM delete_spool.
        endif.
        IF sy-sysid = c_dev.
          wait up to 5 seconds.
          SUBMIT rsconn01 WITH mode   = 'INT'
                          WITH output = 'X'
                          AND RETURN.
        ENDIF.
      ELSE.
        SKIP.
        WRITE:/ 'Program must be executed in background in-order for spool',
                'request to be created.'.
      ENDIF.
          FORM obtain_spool_id                                          *
    FORM obtain_spool_id.
      CHECK NOT ( gd_jobname IS INITIAL ).
      CHECK NOT ( gd_jobcount IS INITIAL ).
      SELECT * FROM  tbtcp
                     INTO TABLE it_tbtcp
                     WHERE      jobname     = gd_jobname
                     AND        jobcount    = gd_jobcount
                     AND        stepcount   = gd_stepcount
                     AND        listident   <> '0000000000'
                     ORDER BY   jobname
                                jobcount
                                stepcount.
      READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.
      IF sy-subrc = 0.
        message s004(zdd) with gd_spool_nr.
        gd_spool_nr = wa_tbtcp-listident.
        MESSAGE s004(zdd) WITH gd_spool_nr.
      ELSE.
        MESSAGE s005(zdd).
      ENDIF.
    ENDFORM.
          FORM get_job_details                                          *
    FORM get_job_details.
    Get current job details
      CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
           IMPORTING
                eventid                 = gd_eventid
                eventparm               = gd_eventparm
                external_program_active = gd_external_program_active
                jobcount                = gd_jobcount
                jobname                 = gd_jobname
                stepcount               = gd_stepcount
           EXCEPTIONS
                no_runtime_info         = 1
                OTHERS                  = 2.
    ENDFORM.
          FORM convert_spool_to_pdf                                     *
    FORM convert_spool_to_pdf.
      CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
           EXPORTING
                src_spoolid              = gd_spool_nr
                no_dialog                = c_no
                dst_device               = c_device
           IMPORTING
                pdf_bytecount            = gd_bytecount
           TABLES
                pdf                      = it_pdf_output
           EXCEPTIONS
                err_no_abap_spooljob     = 1
                err_no_spooljob          = 2
                err_no_permission        = 3
                err_conv_not_possible    = 4
                err_bad_destdevice       = 5
                user_cancelled           = 6
                err_spoolerror           = 7
                err_temseerror           = 8
                err_btcjob_open_failed   = 9
                err_btcjob_submit_failed = 10
                err_btcjob_close_failed  = 11
                OTHERS                   = 12.
      CHECK sy-subrc = 0.
    Transfer the 132-long strings to 255-long strings
      LOOP AT it_pdf_output.
        TRANSLATE it_pdf_output USING ' ~'.
        CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
      ENDLOOP.
      TRANSLATE gd_buffer USING '~ '.
      DO.
        it_mess_att = gd_buffer.
        APPEND it_mess_att.
        SHIFT gd_buffer LEFT BY 255 PLACES.
        IF gd_buffer IS INITIAL.
          EXIT.
        ENDIF.
      ENDDO.
    ENDFORM.
          FORM process_email                                            *
    FORM process_email.
      DESCRIBE TABLE it_mess_att LINES gd_recsize.
      CHECK gd_recsize > 0.
      PERFORM send_email USING p_email1.
    perform send_email using p_email2.
    ENDFORM.
          FORM send_email                                               *
    -->  p_email                                                       *
    FORM send_email USING p_email.
      CHECK NOT ( p_email IS INITIAL ).
      REFRESH it_mess_bod.
    Default subject matter
      gd_subject         = 'Subject'.
      gd_attachment_desc = 'Attachname'.
    CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.
      it_mess_bod        = 'Message Body text, line 1'.
      APPEND it_mess_bod.
      it_mess_bod        = 'Message Body text, line 2...'.
      APPEND it_mess_bod.
    If no sender specified - default blank
      IF p_sender EQ space.
        gd_sender_type  = space.
      ELSE.
        gd_sender_type  = 'INT'.
      ENDIF.
    Send file by email as .xls speadsheet
      PERFORM send_file_as_email_attachment
                                   tables it_mess_bod
                                          it_mess_att
                                    using p_email
                                          'Example .xls documnet attachment'
                                          'PDF'
                                          gd_attachment_name
                                          gd_attachment_desc
                                          p_sender
                                          gd_sender_type
                                 changing gd_error
                                          gd_reciever.
    ENDFORM.
          FORM delete_spool                                             *
    FORM delete_spool.
      DATA: ld_spool_nr TYPE tsp01_sp0r-rqid_char.
      ld_spool_nr = gd_spool_nr.
      CHECK p_delspl <> c_no.
      CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'
           EXPORTING
                spoolid = ld_spool_nr.
    ENDFORM.
    *&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
          Send email
    FORM send_file_as_email_attachment tables it_message
                                              it_attach
                                        using p_email
                                              p_mtitle
                                              p_format
                                              p_filename
                                              p_attdescription
                                              p_sender_address
                                              p_sender_addres_type
                                     changing p_error
                                              p_reciever.
      DATA: ld_error    TYPE sy-subrc,
            ld_reciever TYPE sy-subrc,
            ld_mtitle LIKE sodocchgi1-obj_descr,
            ld_email LIKE  somlreci1-receiver,
            ld_format TYPE  so_obj_tp ,
            ld_attdescription TYPE  so_obj_nam ,
            ld_attfilename TYPE  so_obj_des ,
            ld_sender_address LIKE  soextreci1-receiver,
            ld_sender_address_type LIKE  soextreci1-adr_typ,
            ld_receiver LIKE  sy-subrc.
    data:   t_packing_list like sopcklsti1 occurs 0 with header line,
            t_contents like solisti1 occurs 0 with header line,
            t_receivers like somlreci1 occurs 0 with header line,
            t_attachment like solisti1 occurs 0 with header line,
            t_object_header like solisti1 occurs 0 with header line,
            w_cnt type i,
            w_sent_all(1) type c,
            w_doc_data like sodocchgi1.
      ld_email   = p_email.
      ld_mtitle = p_mtitle.
      ld_format              = p_format.
      ld_attdescription      = p_attdescription.
      ld_attfilename         = p_filename.
      ld_sender_address      = p_sender_address.
      ld_sender_address_type = p_sender_addres_type.
    Fill the document data.
      w_doc_data-doc_size = 1.
    Populate the subject/generic message attributes
      w_doc_data-obj_langu = sy-langu.
      w_doc_data-obj_name  = 'SAPRPT'.
      w_doc_data-obj_descr = ld_mtitle .
      w_doc_data-sensitivty = 'F'.
    Fill the document data and get size of attachment
      CLEAR w_doc_data.
      READ TABLE it_attach INDEX w_cnt.
      w_doc_data-doc_size =
         ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
      w_doc_data-obj_langu  = sy-langu.
      w_doc_data-obj_name   = 'SAPRPT'.
      w_doc_data-obj_descr  = ld_mtitle.
      w_doc_data-sensitivty = 'F'.
      CLEAR t_attachment.
      REFRESH t_attachment.
      t_attachment[] = it_attach[].
    Describe the body of the message
      CLEAR t_packing_list.
      REFRESH t_packing_list.
      t_packing_list-transf_bin = space.
      t_packing_list-head_start = 1.
      t_packing_list-head_num = 0.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE it_message LINES t_packing_list-body_num.
      t_packing_list-doc_type = 'RAW'.
      APPEND t_packing_list.
    Create attachment notification
      t_packing_list-transf_bin = 'X'.
      t_packing_list-head_start = 1.
      t_packing_list-head_num   = 1.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
      t_packing_list-doc_type   =  ld_format.
      t_packing_list-obj_descr  =  ld_attdescription.
      t_packing_list-obj_name   =  ld_attfilename.
      t_packing_list-doc_size   =  t_packing_list-body_num * 255.
      APPEND t_packing_list.
    Add the recipients email address
      CLEAR t_receivers.
      REFRESH t_receivers.
      t_receivers-receiver = ld_email.
      t_receivers-rec_type = 'U'.
      t_receivers-com_type = 'INT'.
      t_receivers-notif_del = 'X'.
      t_receivers-notif_ndel = 'X'.
      APPEND t_receivers.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                document_data              = w_doc_data
                put_in_outbox              = 'X'
                sender_address             = ld_sender_address
                sender_address_type        = ld_sender_address_type
                commit_work                = 'X'
           IMPORTING
                sent_to_all                = w_sent_all
           TABLES
                packing_list               = t_packing_list
                contents_bin               = t_attachment
                contents_txt               = it_message
                receivers                  = t_receivers
           EXCEPTIONS
                too_many_receivers         = 1
                document_not_sent          = 2
                document_type_not_exist    = 3
                operation_no_authorization = 4
                parameter_error            = 5
                x_error                    = 6
                enqueue_error              = 7
                OTHERS                     = 8.
    Populate zerror return code
      ld_error = sy-subrc.
    Populate zreceiver return code
      LOOP AT t_receivers.
        ld_receiver = t_receivers-retrn_code.
      ENDLOOP.
    ENDFORM.
    regards,
    venkat

  • Email sending with pdf document?

    hi folks,iam using jdeveloper 11.1.2.3.0 my requirement as follows
    Iam sending the mail with an attachment of pdf document..
    i have two tables proforma invoice table(colums are ex:finalized date and chargepartycode) and chargepartymaster table(columns are ex:chargepartycode and email)..here when ever the proforma is finalized,i pick all the finalized records with respective chargepartycode,and pick email from chargepartymaster with respective chargepartycode ,now i need to send a mail for the respected email upto here fine.here is my requirement
    single chargeparty has multiple invoice will so i need to generate single pdf for same chargepartycode and send it to the respected email ,here problem is generating the pdf for same chargeparty in one page and different chargeparties in different pages..how

    Hi,
    I think we need to split the question:
    1. Create a PDF file and send a mail from ADF
    Here ADF doesn't provide specific libraries and thus you want to Google for Java APIs to i) create PDF documents and ii) send a mail with attachment
    2. Query invoices and associated details
    This can easily be done in ADF by querying a View object for the invoice and then use its view link accessor to access detail rows. How to access a detail from a master row is explained in the Fusion Developer Guide on OTN
    http://docs.oracle.com/cd/E37975_01/web.111240/e16182/toc.htm
    Frank

  • Sending a PDF document

    Is there any way to send a PDF file with the comments and highlights via email?

    Yes, just press the share button, and then "E-mail Document."
    It will send the document with all the comments and highlights.

  • Send several pdf attachments has one file

    I sent out an email today with 25 pdf files attached. The person who received it said she had to open each file to see it instead of the whole file being sent has one file. How do you do this?

    Hi oz1234
    if you have sent 25 different files, receiver will see 25 different files.
    You can use acrobat and combine them into one single file and send that one file.
    Please Refer : http://www.adobe.com/in/products/acrobat/merge-pdf-files.html

  • Uploading and sending a PDF document from document management

    Hello to all,
    does anybody know a function module which is able to upload a pdf document stored within the document managemenent system of ERP and then send it via e-mail?
    Thanks to all
    Jörg

    Hi,
    Getting PDF:CONVERT_OTF
    mail:SSF_FUNCTION_MODULE_NAME
    Regrds:
    Prabu

  • What is the best program for converting text PDF documents to audio files?

    Hi all, I'm looking for a program (cost is not a factor, I'm looking for the highest functionality) that will convert PDF files (text, often scanned documents) to audio files, preferably ones that are able to have the recordings saved.

    Podner is very good.
    http://www.splasm.com/products/productpodner.html
    12 PowerBook Mac OS X (10.4.2)

Maybe you are looking for

  • Audio Problems with connecting Macbook Pro to Tv

    Hello, I connected my Macbook Pro to my 42 inch Vizio with a Mini DisplayPort Male to HDMI Male Cable with Audio Transmission.  The picture is set to Mirror image and the picture is fine but I can not get any sound to tranfer from my Macbook to my Vi

  • Mac mini and flash

    Does the Mac Mini support a Flash Player?

  • Cannot change Desktop picture

    My new 15" MacBook Pro running 10.6.8 will not allow me to choose my own Photo as Desktop. Any ideas, anyone? Thanks!

  • HT204370 Can't locate movie! D:

    I bought a movie and I chose to download it later, and now that I'm ready to start downloading, I can't find it. Where do I go?

  • Anyone using final cut studio on 15" PB 1.67?

    Want to upgrade from express but was wondering if my pb can handle studio or should i just get FCP.....I would like answers from users who have a 15"pb, please dont ask me to check the system requirements page because the only thing I know about my P