Я буду периодически отправлять csv файлы клиенту. Мне интересно, есть ли способ отправить какой-либо файл в папке, если он имеет расширение csv, так как я не буду заранее знать имя файла.
Я считаю, что у меня есть рабочий код, который позволит моему сценарию VBA в сочетании с планировщиком задач автоматически отправлять электронные письма. Я просто застрял на том, как прикрепить файл, имя которого я не знаю.
Const cSmtpUser = "username" ' *** MAKE CHANGES HERE ***
Const cSmtpPassword = "password" ' *** MAKE CHANGES HERE ***
Const cSmtpServer = "smtp.xxx.yyy" ' *** MAKE CHANGES HERE ***
Const cSmtpPort = 465 ' *** MAKE CHANGES HERE *** (25, 465, 587 common)
Const cFromEmail = "xxxxxxxxx@xxx.yyy" ' *** MAKE CHANGES HERE ***
Const cToEmail = "xxxxxxxxx@xxx.yyy" ' *** MAKE CHANGES HERE ***
Const cSubject = "Daily Email Subject" ' *** MAKE CHANGES HERE ***
Const cEmailBody = "See attached for todays file." ' *** MAKE CHANGES HERE ***
Const cAttachment = "c:\temp\yourfile.txt" ' *** MAKE CHANGES HERE ***
' CDO Constants needed to send email
Const cCdoSendUsingPickup = 1 'Send message using the local SMTP service pickup directory.
Const cCdoSendUsingPort = 2 'Send the message using the network (SMTP over the network).
Const cCdoAnonymous = 0 'Do not authenticate
Const cCdoBasic = 1 'basic (clear-text) authentication
Const cCdoNTLM = 2 'NTLM
Const cCdoSendUsingMethod = "http://schemas.microsoft.com/cdo/configuration/sendusing"
Const cCdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/smtpserver"
Const cCdoSMTPServerPort = "http://schemas.microsoft.com/cdo/configuration/smtpserverport"
Const cCdoSMTPConnectionTimeout = "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"
Const cCdoSMTPAuthenticate = "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"
Const cCdoSendUserName = "http://schemas.microsoft.com/cdo/configuration/sendusername"
Const cCdoSendPassword = "http://schemas.microsoft.com/cdo/configuration/sendpassword"
Const cCdoSmtpUseSsl = "http://schemas.microsoft.com/cdo/configuration/smtpusessl"
' Create filesystem object
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Get a handle to the config object and it's fields
Set objConfig = CreateObject("CDO.Configuration")
' Set config fields we care about
With objConfig.Fields
.Item(cCdoSendUsingMethod) = cCdoSendUsingPort
.Item(cCdoSMTPServer) = cSmtpServer
.Item(cCdoSMTPServerPort) = cSmtpPort
.Item(cCdoSMTPConnectionTimeout) = 60
.Item(cCdoSMTPAuthenticate) = cCdoBasic
.Item(cCdoSendUserName) = cSmtpUser
.Item(cCdoSendPassword) = cSmtpPassword
.Item(cCdoSmtpUseSsl) = True
.Update
End With
' Create a new message
Set objMessage = CreateObject("CDO.Message")
Set objMessage.Configuration = objConfig
' Populate message fields and send it
With objMessage
.To = cToEmail
.From = cFromEmail
.Subject = cSubject
.Textbody = cEmailBody
If objFSO.FileExists(cAttachment) Then
.AddAttachment cAttachment
End If
.Send
End With
Надеюсь, я смогу отправить любой файл в папке, если он имеет расширение CSV. Если это невозможно, но можно отправить любой файл независимо от расширения, я могу сделать так, чтобы в папке были только файлы csv.
Спасибо за помощь.