1

Тема: VBS: Как прикрепить несколько файлов в письме?

К сожалению не очень опытен c VBS.

Есть скрипт для отправки  сообщения с одним вложенным файлом!


 
Set S = CreateObject("Wscript.Shell") 
 set FSO=createobject("scripting.filesystemobject") 
 Call SendPost("smtp.mail.ru","login1@mail.ru","login2@mail.ru","Отчет","Последний месяц") 
 Function SendPost(strSMTP_Server,strTo,strFrom,strSubject,strBody) 
 Set iMsg=CreateObject("CDO.Message") 
 Set iConf=CreateObject("CDO.Configuration") 
 Set Flds=iConf.Fields 
 Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")=2 
 Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1 
 Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername")="login" 
 Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword")="password" 
 Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")="smtp.mail.ru" 
 Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25 
 Flds.Update 
 iMsg.Configuration=iConf 
 iMsg.To=strTo 
 iMsg.From=strFrom 
 iMsg.Subject=strSubject 
 iMsg.TextBody=strBody 
 iMsg.AddAttachment "C:\Users\%userprofile%\Desktop\otchet_15_05_2011.txt" 
 iMsg.Send 
 End Function 
 Set iMsg=Nothing 
 Set iConf=Nothing 
 Set Flds=Nothing

1. Как отправить сразу несколько текстовых файлов?
2. Что делать если имеется несколько компьютеров..и у них разные пути к рабочему столу?

2

Re: VBS: Как прикрепить несколько файлов в письме?

Если кратко, то:
1. Добавить столько "iMsg.AddAttachment" сколько требуется вложений.
2.1. Можно прочитать в реестре - HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop (проверить на совместимость с проактивкой антивирусов )
2.2. Можно воспользоваться WshShell.SpecialFolders("Desktop").

3

Re: VBS: Как прикрепить несколько файлов в письме?

BeS Yara пишет:

Если кратко, то:
1. Добавить столько "iMsg.AddAttachment" сколько требуется вложений.

Хм..а если количество и названия файлов произвольные?

4

Re: VBS: Как прикрепить несколько файлов в письме?

2 staw2ros:

staw2ros пишет:

Хм..а если количество и названия файлов произвольные?

Определённо странный вопрос !

Похоже на диалог:
А - Есть инструкция для выкапывания ямы ! Как выкопать несколько ям ?
Б - Ну соответственно, воткнуть лопату и вынуть землю столько раз, сколько вам нужно.
А - Хм..а если количество ям и их глубина произвольные ?

Не хочу не дай бог обидеть, но Вы читаете то, что сами пишете ? Как бы Вы ответили на последний вопрос диалога ? O_o Или это я что то не понимаю и у меня лохматость повысилась ?

Ну да ладно. вернёмся к коду... Что то мешает сделать так ?


Const Desktop = 4
Set S = CreateObject("Wscript.Shell") 
Set FSO = CreateObject("scripting.filesystemobject")
Call SendPost("smtp.mail.ru","login1@mail.ru","login2@mail.ru","Отчет","Последний месяц") 
Function SendPost(strSMTP_Server,strTo,strFrom,strSubject,strBody) 
Set iMsg=CreateObject("CDO.Message") 
Set iConf=CreateObject("CDO.Configuration") 
Set Flds=iConf.Fields 
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")=2 
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1 
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername")="login" 
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword")="password" 
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")="smtp.mail.ru" 
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25 
Flds.Update 
iMsg.Configuration=iConf 
iMsg.To=strTo 
iMsg.From=strFrom 
iMsg.Subject=strSubject 
iMsg.TextBody=strBody 
iMsg.AddAttachment S.SpecialFolders(Desktop) & "\otchet_15_05_2011.txt" 
iMsg.AddAttachment S.SpecialFolders(Desktop) & "\otchet_15_05_2012.txt" 
iMsg.AddAttachment S.SpecialFolders(Desktop) & "\A.txt" 
iMsg.AddAttachment S.SpecialFolders(Desktop) & "\b.txt" 
iMsg.Send 
End Function 
Set iMsg=Nothing 
Set iConf=Nothing 
Set Flds=Nothing
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

5

Re: VBS: Как прикрепить несколько файлов в письме?

Xameleon пишет:

Похоже на диалог:
А - Есть инструкция для выкапывания ямы ! Как выкопать несколько ям ?
Б - Ну соответственно, воткнуть лопату и вынуть землю столько раз, сколько вам нужно.
А - Хм..а если количество ям и их глубина произвольные ?

Да! Смешно вышло)

Я имел ввиду то что у меня количество файлов все время разное!

К примеру на рабочем столе есть N-ое количество txt файлов... как их все можно отправить на почту?

6

Re: VBS: Как прикрепить несколько файлов в письме?

staw2ros пишет:

К примеру на рабочем столе есть N-ое количество txt файлов... как их все можно отправить на почту?

Ну вот теперь вопрос уже более понятный. )

Const Desktop = 4
Set S = CreateObject("Wscript.Shell") 
Set FSO = CreateObject("scripting.filesystemobject")

strSMTP_Server = "smtp.mail.ru"
strTo = "login2@mail.ru"
strFrom = "Отчет"
strSubject = "Отчет"
strBody = "Последний месяц"

Set iMsg=CreateObject("CDO.Message") 
Set iConf=CreateObject("CDO.Configuration") 
Set Flds=iConf.Fields 
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")=2 
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1 
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername")="login" 
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword")="password" 
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")="smtp.mail.ru" 
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25 
Flds.Update 
iMsg.Configuration=iConf 
iMsg.To=strTo 
iMsg.From=strFrom 
iMsg.Subject=strSubject 
iMsg.TextBody=strBody 
Set fld = FSO.GetFolder(S.SpecialFolders(Desktop))
For each file in fld.files
    if LCase(FSO.GetExtensionName(file)) = "txt" Then
        iMsg.AddAttachment file.path 
    End if
Next
iMsg.Send
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

7

Re: VBS: Как прикрепить несколько файлов в письме?

Вот Спасибо Большое!=)
Это как раз и нужно было)