Войти

Показать полную графическую версию : [решено] Отправка файла по почте с любым именем и определенным расширением


FantomasAnand
01-07-2016, 15:06
Path = "\\Directory"
Set Items = CreateObject("Shell.Application").NameSpace(Path).Items
Items.Filter 192, "*.doc"
If Items.Count = 1 Then
Web = "http://schemas.microsoft.com/cdo/configuration/"
With CreateObject("CDO.Message")
.From = "xxxmail"
.To = "xxxmail"
.Bcc = "xxxmail"
.Subject = "test"
.Textbody = "test"
.AddAttachment Path & Items.Item(0)
.Configuration.Fields.Item (Web & "sendusing") = 2
.Configuration.Fields.Item (Web & "smtpserver") = "xxxsmtp"
.Configuration.Fields.Item (Web & "smtpserverport") = 25
.Configuration.Fields.Update
.Send
End with
with CreateObject("Scripting.FileSystemObject")
.MoveFile "\\directory\*.doc", "directory\dicrectory1"
end with
end if

Прописал Items.Filter 192, "*.doc", но звездочку видимо не воспринимает. Почему?Как сделать чтобы имя было любое.
При запуске скрипта возникает ошибка , см. скриншот.

Iska
01-07-2016, 16:32
Причём тут «звёздочка»? У Вас ошибка совсем в другой строке:
.AddAttachment Path & Items.Item(0)
Попробуйте:
.AddAttachment Path & Items.Item(0).Path

FantomasAnand
01-07-2016, 16:49
понял почему возникает эта ошибка .AddAttachment Path & Items.Item(0) . Забыл в строке Path добавить слеш, Path = "\\Directory\"

Но задача отправки файла по почте с любым именем и определенным расширением открыта. Когда пишу конкретное имя в имени файла то отправка происходит, например Items.Filter 192, "1.doc".
А вот если проставить звездочку, то ошибку не выдает, но и письмо не приходит

Iska
01-07-2016, 16:54
понял почему возникает эта ошибка .AddAttachment Path & Items.Item(0) . Забыл в строке Path добавить слеш, Path = "\\Directory\" »
И я не обратил внимания.

Но задача отправки файла по почте с любым именем и определенным расширением открыта. Когда пишу конкретное имя в имени файла то отправка происходит, например Items.Filter 192, "1.doc".
А вот если проставить звездочку, то ошибку не выдает, но и письмо не приходит »
Начните с требования обязательного объявления переменных «Option Explicit».

FantomasAnand
01-07-2016, 17:27
Начните с требования обязательного объявления переменных «Option Explicit». »
Прописал, ошибок нет, но также не работает отправка.Точнее Не отправка не работает, а скорее поиск "*.doc". он просто как будто не находит там файла. Допусти если прописать явное имя файла, но которого в папке нет, то он тоже ошибок не даст и ничего не отправит.

Option explicit
dim Path
dim Items
Path = "\\Directory\"
Set Items = CreateObject("Shell.Application").NameSpace(Path).Items
Items.Filter 192, "*.doc"
If Items.Count = 1 Then
Web = "http://schemas.microsoft.com/cdo/configuration/"
With CreateObject("CDO.Message")
.From = "xxxmail"
.To = "xxxmail"
.Bcc = "xxxmail"
.Subject = "test"
.Textbody = "test"
.AddAttachment Path & Items.Item(0)
.Configuration.Fields.Item (Web & "sendusing") = 2
.Configuration.Fields.Item (Web & "smtpserver") = "xxxsmtp"
.Configuration.Fields.Item (Web & "smtpserverport") = 25
.Configuration.Fields.Update
.Send
End with
with CreateObject("Scripting.FileSystemObject")
.MoveFile "\\directory\*.doc", "directory\dicrectory1"
end with
end if

Iska
01-07-2016, 22:53
Прописал, ошибок нет, »
Я не вижу объявления переменной Web. Так что ошибка должна была быть. Если её нет — вероятно, до отсылки дело попросту не доходит. Вы уверены, что у Вас там ровно один файл *.doc?! Я — нет. Добавьте перед условием:
WScript.Echo Items.Count
и проверьте. Например, есть вероятность наличия там скрытых временных файлов вида «~$….doc».

FantomasAnand
04-07-2016, 08:48
В итоге помогло это решение.

Path = "\\Directory\"
Set Items = CreateObject("Shell.Application").NameSpace(Path).Items
Items.Filter 192, "*.doc"
If Items.Count = 1 Then
Web = "http://schemas.microsoft.com/cdo/configuration/"
With CreateObject("CDO.Message")
.From = "xxxmail"
.To = "xxxxmail"
.Bcc = "xxxxxmail"
.Subject = "test"
.Textbody = "test"
.AddAttachment Path & Items.Item(0)
.Configuration.Fields.Item (Web & "sendusing") = 2
.Configuration.Fields.Item (Web & "smtpserver") = "xxx-smtp"
.Configuration.Fields.Item (Web & "smtpserverport") = 25
.Configuration.Fields.Update
.Send
End with
with CreateObject("Scripting.FileSystemObject")
.MoveFile "\\Directory\*.doc", "\\Directory\Backup"
end with
end if




© OSzone.net 2001-2012