Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Помогите доработать скрипт отправки по почте с аттачем

Ответить
Настройки темы
VBS/WSH/JS - Помогите доработать скрипт отправки по почте с аттачем

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день. Помогите решить проблему.

Есть полностью рабочий скрипт gmail.vbs
Действия скрипта:
проверяет соединение с интернетом, если нет соединения - выдает
сообщение: "Проверьте соединение с интернетом".
Если интернет есть -
Создает письмо с указанными в скрипте параметрами и прикрепляет файл,
лежащий по пути: D:\Program files\Blablabla\zakaz\zacaz035_2.rpt
Отправляет этот файл по почте и выводит сообщение клиенту: "Ваш заказ успешно отправлен!"

Не могу решить:
1. Программа Blablabla не всегда находится по пути D:\Program files\Blablabla, у разных пользователей пути разные.
Как заставить скрипт искать где установлена программа?? Запись о пути установки есть в реестре:
HKEY_LOCAL_MACHINE\SOFTWARE\Blablabla
(параметр Path).
2. Как заставить прикреплять не конкретый файл, а файл с раширением
*.rpt, так как все имена заказов разные.


Код: Выделить весь код
 set WshShell = CreateObject("WScript.Shell")
'Запускаем ping и ожидаем завершения его работы
Return = WshShell.Run("ping www.google.com ", 0, true)
If Return=1 then 
MsgBox"Проверьте соединение с интернетом!"
Else

Const cdoSendUsingPickup = 1 'Send message using the local SMTP service pickup directory. 
Const cdoSendUsingPort = 2 'Send the message using the network (SMTP over the network). 

Const cdoAnonymous = 0 'Do not authenticate
Const cdoBasic = 1 'basic (clear-text) authentication
Const cdoNTLM = 2 'NTLM

Set objMessage = CreateObject("CDO.Message") 
objMessage.Subject = "Тема" 
objMessage.From = """Zakaz"" <user@gmail.com>" 
objMessage.To = "mybox@gmail.com" 
objMessage.TextBody = "Вам был отправлен заказ."
objMessage.AddAttachment " D:\Program files\Blablabla\zakaz\zacaz035_2.rpt "

'==This section provides the configuration information for the remote SMTP server.

objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 

'Name or IP of Remote SMTP Server
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"

'Type of authentication, NONE, Basic (Base64 encoded), NTLM
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic

'Your UserID on the SMTP server
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "user@gmail.com"

'Your password on the SMTP server
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"

'Server port (typically 25)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 

'Use SSL for the connection (False or True)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True

'Connection Timeout in seconds (the maximum time CDO will try to establish a connection to the SMTP server)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60

objMessage.Configuration.Fields.Update

'==End remote SMTP server configuration section==

objMessage.Send

MsgBox"Ваш заказ успешно отправлен!"
End if

Отправлено: 22:23, 19-02-2011

 

Старожил


Сообщения: 175
Благодарности: 119

Профиль | Отправить PM | Цитировать


Вставьте эту функцию в скрипт:
Код: Выделить весь код
Function GetAttach
  Dim strPath
  Dim arrFiles
    strPath = WshShell.RegRead("HKLM\SOFTWARE\Blablabla\Path") & "\zakaz\"
    Set arrFiles = CreateObject("Shell.Application").NameSpace(strPath).Items
    arrFiles.Filter 64, "zacaz*.rpt"
    Select Case arrFiles.Count
      Case 0
        MsgBox "Файл для отправки не найден.", 48, "Отправка файла"
        WScript.Quit 1
      Case 1
        GetAttach = arrFiles.Item(0).Path
      Case Else
        MsgBox "Найдено несколько файлов.", 48, "Отправка файла"
        WScript.Quit 1
    End Select
End Function
И поменяйте строку
Код: Выделить весь код
objMessage.AddAttachment " D:\Program files\Blablabla\zakaz\zacaz035_2.rpt "
на
Код: Выделить весь код
objMessage.AddAttachment GetAttach

Последний раз редактировалось SendMessage, 20-02-2011 в 10:12.

Это сообщение посчитали полезным следующие участники:

Отправлено: 04:45, 20-02-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


SendMessage, уточнение:
Цитата diavard:
objMessage.AddAttachment " D:\Program files\Blablabla\zakaz\zacaz035_2.rpt "
по:
Цитата SendMessage:
strPath = WshShell.RegRead("HKLM\SOFTWARE\Blablabla\Path") & "\zacaz\"
Вообще мудрёно у автора: раз так названо, раз этак .
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:50, 20-02-2011 | #3


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


SendMessage, спасибо большое, все работает отлично. Упустил еще один момент - после того, как файл с заказом отправлен - он остается в папке zakaz. Помогите пожалуйста, чтоб после отправки письма с вложением этот заказ перемещаляся в папку old_zakaz. Не копировался, а именно перемещался. Заранее спасибо.

Iska, Папка, где хранится файл заказ называется zakaz, а вот сам файл - zacaz.
Мудрено, потому что структуру инсталлятора писал я, а функцию вывода файла с заказом - другой человек. Вот и получилось.

Отправлено: 13:56, 21-02-2011 | #4


Старожил


Сообщения: 175
Благодарности: 119

Профиль | Отправить PM | Цитировать


Вместо строки
Код: Выделить весь код
objMessage.AddAttachment GetAttach
вставьте эти:
Код: Выделить весь код
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
OutFolder = "D:\Program files\Blablabla\old_zakaz\"
AttachFile = GetAttach
OutAttachFile = OutFolder & fso.GetFileName(AttachFile)
objMessage.AddAttachment AttachFile
If fso.FileExists(OutAttachFile) Then fso.DeleteFile OutAttachFile
fso.MoveFile AttachFile, OutFolder
Не проверял.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:55, 21-02-2011 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Помогите доработать скрипт отправки по почте с аттачем

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Требуется доработать скрипт, чтобы при его запуске появлялся запрос на повышение прав okshef Скриптовые языки администрирования Windows 16 24-07-2010 23:09
скрипт отправки почты stolyar Вебмастеру 10 04-01-2010 18:23
Как прикрепить файл для отправки по электронной почте в CMS Joomla? SashaKl Вебмастеру 1 12-06-2009 15:44
Скрипт отправки сообщений (неправильная кодировка) Denis Shutka Вебмастеру 2 10-04-2005 09:12
скрипт формы отправки на мыло Denis Shutka Вебмастеру 1 10-01-2005 02:57




 
Переход