Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) Download and Save Email Attachments (POP3)See more POP3 ExamplesDownloads emails from a POP3 mailbox and saves all attachments.
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- This example assumes the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. -- The mailman object is used for receiving (POP3) -- and sending (SMTP) email. DECLARE @mailman int -- Use "Chilkat_9_5_0.MailMan" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.MailMan', @mailman OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- Set the POP3 server's hostname EXEC sp_OASetProperty @mailman, 'MailHost', 'pop.yourserver.com' -- Set the POP3 login/password. EXEC sp_OASetProperty @mailman, 'PopUsername', '***' EXEC sp_OASetProperty @mailman, 'PopPassword', '***' -- Copy the all email from the user's POP3 mailbox -- into a bundle object. The email remains on the server. -- CopyMail is a reasonable choice for POP3 maildrops that don't have too many -- emails. For larger mail drops, one might download emails one at a time.. DECLARE @bundle int EXEC sp_OAMethod @mailman, 'CopyMail', @bundle OUT EXEC sp_OAGetProperty @mailman, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 <> 1 BEGIN EXEC sp_OAGetProperty @mailman, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @mailman RETURN END -- The directory path can be relative or absolute. -- This shows a Windows style directory path. On other operating systems, the path -- would be different.. DECLARE @dirPath nvarchar(4000) SELECT @dirPath = 'c:/myAttachments' DECLARE @success int DECLARE @bundleIndex int SELECT @bundleIndex = 0 DECLARE @numMessages int EXEC sp_OAGetProperty @bundle, 'MessageCount', @numMessages OUT DECLARE @email int WHILE (@bundleIndex < @numMessages) BEGIN EXEC sp_OAMethod @bundle, 'GetEmail', @email OUT, @bundleIndex -- Save all attachments to the specified directory. -- The directory is automatically created if it does not yet exist. EXEC sp_OAMethod @email, 'SaveAllAttachments', @success OUT, @dirPath IF @success <> 1 BEGIN EXEC sp_OAGetProperty @email, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @mailman RETURN END -- The OverwriteExisting property controls whether already-existing files -- are automatically overwritten. By default, it is set to 1 so that existing -- files will be overwritten. -- Setting OverwriteExisting = 0 will cause the attachment-saving methods to generate -- unique filenames if a file with the same name already exists. The actual filename(s) -- saved will be present by calling GetAttachmentFilename for each attachment *after* -- saving. -- For example... EXEC sp_OASetProperty @email, 'OverwriteExisting', 0 EXEC sp_OAMethod @email, 'SaveAllAttachments', @success OUT, @dirPath IF @success <> 1 BEGIN EXEC sp_OAGetProperty @email, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @mailman RETURN END DECLARE @numAttachments int EXEC sp_OAGetProperty @email, 'NumAttachments', @numAttachments OUT DECLARE @attachIndex int SELECT @attachIndex = 0 WHILE (@attachIndex < @numAttachments) BEGIN -- If the attachment filename was changed to prevent overwriting, -- GetAttachmentFilename will return the new filename. EXEC sp_OAMethod @email, 'GetAttachmentFilename', @sTmp0 OUT, @attachIndex PRINT @sTmp0 SELECT @attachIndex = @attachIndex + 1 END -- Attachments can also be saved individually. SELECT @attachIndex = 0 WHILE (@attachIndex < @numAttachments) BEGIN EXEC sp_OAMethod @email, 'GetAttachmentFilename', @sTmp0 OUT, @attachIndex PRINT 'Original Filename: ' + @sTmp0 EXEC sp_OAMethod @email, 'SaveAttachedFile', @success OUT, @attachIndex, @dirPath IF @success <> 1 BEGIN EXEC sp_OAGetProperty @email, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @mailman RETURN END -- If OverwriteExisting = 1, the saved filename will always equal the original filename, -- unless there are characters present in the filename that are not allowed by Windows, -- such as * ? < > | etc. In those cases the illegal characters are either removed or replaced -- with underscore characters to allow the file to be saved. EXEC sp_OAMethod @email, 'GetAttachmentFilename', @sTmp0 OUT, @attachIndex PRINT 'Saved Filename: ' + @sTmp0 SELECT @attachIndex = @attachIndex + 1 END EXEC @hr = sp_OADestroy @email SELECT @bundleIndex = @bundleIndex + 1 END EXEC @hr = sp_OADestroy @bundle EXEC @hr = sp_OADestroy @mailman END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.