Sample code for 30+ languages & platforms
DataFlex

Control Overwriting When Saving Attachments

See more Email Object Examples

Demonstrates the Chilkat Email.OverwriteExisting property. When true (the default), the methods that save attachments and related items overwrite files that already exist. When false, those methods instead append a short 4-character string to create a unique filename, and the filename stored in the email object is updated so your program can discover the actual file(s) created. This setting applies only when writing to the filesystem. This example disables overwriting and saves all attachments.

Background: Attachment filenames come from the sender and are not guaranteed to be unique — two different emails (or even two parts of one email) can both be named invoice.pdf. When saving many attachments into one folder, that collision would silently destroy data if each save overwrote the last. Setting OverwriteExisting to false makes Chilkat generate a distinct name instead, and reading the updated filename back from the object tells you where the file actually landed.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoEmail
    String sTemp1
    Boolean bTemp1

    Move False To iSuccess

    //  Demonstrates the Email.OverwriteExisting property.  When true (the default), the
    //  methods that save attachments and related items overwrite existing files.  When
    //  false, Chilkat instead creates a unique filename (appending 4 characters) so an
    //  existing file is not overwritten.

    Get Create (RefClass(cComChilkatEmail)) To hoEmail
    If (Not(IsComObjectCreated(hoEmail))) Begin
        Send CreateComObject of hoEmail
    End
    Set ComSubject Of hoEmail To "Attachment save demo"
    Get ComAddStringAttachment Of hoEmail "report.txt" "Attachment contents." To iSuccess

    //  Do not overwrite an existing file; create a unique filename instead.
    Set ComOverwriteExisting Of hoEmail To False

    Get ComSaveAllAttachments Of hoEmail "qa_output/attachments" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoEmail To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComOverwriteExisting Of hoEmail To bTemp1
    Showln "Saved.  OverwriteExisting = " bTemp1


End_Procedure