SQL Server
SQL Server
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 SQL Server Downloads
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
DECLARE @iTmp0 int
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
-- 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.
DECLARE @email int
EXEC @hr = sp_OACreate 'Chilkat.Email', @email OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
EXEC sp_OASetProperty @email, 'Subject', 'Attachment save demo'
EXEC sp_OAMethod @email, 'AddStringAttachment', @success OUT, 'report.txt', 'Attachment contents.'
-- Do not overwrite an existing file; create a unique filename instead.
EXEC sp_OASetProperty @email, 'OverwriteExisting', 0
EXEC sp_OAMethod @email, 'SaveAllAttachments', @success OUT, 'qa_output/attachments'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @email, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @email
RETURN
END
EXEC sp_OAGetProperty @email, 'OverwriteExisting', @iTmp0 OUT
PRINT 'Saved. OverwriteExisting = ' + @iTmp0
EXEC @hr = sp_OADestroy @email
END
GO