Автоматическая подпись в Outlook

Windows Script Host (WSH), WMI, vbs скрипты и т.д. Создание и применение скриптов.

Модератор: Модераторы

Администратор
Сообщения: 3444
Зарегистрирован: 19 дек 2003, 13:36
Откуда: Москва

Сообщение domovoy » 03 окт 2007, 01:45

К недавно обсуждаемой теме установки автоматической подписи в Outlook
Небольшофй скрипт, который через ГП при входе пользователя автоматически устанавливает ему подпись используя данные из АД

Установка подписи:
Используя значенеие extensionAttribute 3 (Exchange Advanced - Custom Attributes 3) устанавливаем пользователю подпись на нужном языке (данные в АД на нужном языке требуется прописать самим)
Основное требование название конфигурации Outlook: Exchange
скорее всего его можно получить автоматом, но просто не смотрел, это все таки пример, а 100% решение. Делалось из расчета автоматической установки офиса с настройкой Outlook на нужное имя конфигурации

Код

Const APPLICATION_DATA = &H1a&

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(APPLICATION_DATA)
Set objFolderItem = objFolder.Self

On Error Resume Next

ParentFolder = objFolderItem.Path &"\Microsoft"

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(ParentFolder)
objFolder.NewFolder "Signatures"

On Error Resume Next

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(APPLICATION_DATA)
Set objFolderItem = objFolder.Self

'Удаляем прошлую подпись не случай изменения ее пользователем
' при необходимости можно дать права на файлы подписи и убрать этот кусок

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile(objFolderItem.Path &"\Microsoft\Signatures\JetTravel.htm")
On Error Resume Next
objFSO.DeleteFile(objFolderItem.Path &"\Microsoft\Signatures\JetTravel.txt")
On Error Resume Next
objFSO.DeleteFile(objFolderItem.Path &"\Microsoft\Signatures\JetTravel.rtf")
On Error Resume Next

Const ForAppending = 8

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile (objFolderItem.Path &"\Microsoft\Signatures\JetTravel.htm", ForAppending, True)'ForWriting, True)

Set WSHNetwork = CreateObject("WScript.Network")

On Error Resume Next

Path = WSHNetwork.UserName
Set objSysInfo = CreateObject("ADSystemInfo")
strUserDN = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUserDN)

' Быбираем язык устанавливаемой подписи
'Select Case objUser.Get("extensionAttribute3")
' Если Русский
If objUser.extensionAttribute3 = "" Then
'Case "ru"
For Each objUser in colUser    
   objTextFile.WriteLine("<HTML><HEAD><META http-equiv=Content-Type content='text/html; charset=windows-1251'></HEAD><BODY><DIV align=Left><br><br>")
Next
For Each objUser in colUser    
   objTextFile.WriteLine("<hr align='left' width='80%' size='1' noshade>")
Next
For Each objUser in colUser    
   objTextFile.WriteLine("<font style='font-size:11px; font-family:Verdana, Arial, Helvetica, sans-serif'>С уважением, <br>")
Next
For Each objUser in colUser    
   objTextFile.WriteLine("Организация: <b>" & "&quot;" & objUser.company & "&quot;" & "</b><br>")
   Next
For Each objUser in colUser    
   objTextFile.WriteLine(objUser.displayName & "<br>")
Next
If objUser.title = "" Then
Else
For Each objUser in colUser    
   objTextFile.WriteLine(objUser.title & "<br>")
Next
End If
For Each objUser in colUser    
   objTextFile.WriteLine(objUser.l & ", " & objUser.streetAddress  & "<br>")
Next
For Each objUser in colUser    
   objTextFile.WriteLine("телефон: " & objUser.telephoneNumber & "<br>" )
Next
If objUser.otherTelephone = "" Then
Else
For Each objUser in colUser    
   objTextFile.WriteLine("внутренний: " & objUser.otherTelephone & "<br>")
Next
End If
For Each objUser in colUser    
   objTextFile.WriteLine("Факс: " & objUser.facsimileTelephoneNumber & "<br>")
Next
If objUser.mobile = "" Then
Else
For Each objUser in colUser    
   objTextFile.WriteLine("моб: " & objUser.mobile & "<br>")
Next
End If
If objUser.pager = "" Then
Else
For Each objUser in colUser    
   objTextFile.WriteLine("ICQ: " & objUser.pager & "<br>")
Next
End If
For Each objUser in colUser    
   objTextFile.WriteLine("<A href='mailto:" & objUser.mail & "'>" & "mailto:" & objUser.mail & "</A><br>")
Next
For Each objUser in colUser    
   objTextFile.WriteLine("<A href='http://" & objUser.wwwhomepage & "'>" & "http://" & objUser.wwwhomepage & "</A></font><br>")
   Next
For Each objUser in colUser    
   objTextFile.WriteLine("<br><table Width='100%'  border='0' cellpadding='5' cellspacing='0' bgcolor='#006699'><tr>")    
Next
For Each objUser in colUser    
   objTextFile.WriteLine("<td align='center' valign='middle'><a href='http://www.jettravel.ru' style='text-decoration:none;'>")
Next
For Each objUser in colUser    
   objTextFile.WriteLine("<b><font style='font-family:Verdana, Arial, Helvetica, sans-serif; color:#FFFFFF; font-Size:13px;'>Организация</font></b></a></td></tr></table>")
Next
For Each objUser in colUser    
   objTextFile.WriteLine("</BODY></HTML>")
Next
' Если Английский
'Case "en"
Else

For Each objUser in colUser    
   objTextFile.WriteLine("<HTML><HEAD><META http-equiv=Content-Type content='text/html; charset=windows-1251'></HEAD><BODY><DIV align=Left><br><br>")
Next
For Each objUser in colUser    
   objTextFile.WriteLine("<hr align='left' width='80%' size='1' noshade>")
Next
For Each objUser in colUser    
   objTextFile.WriteLine("<font style='font-size:11px; font-family:Verdana, Arial, Helvetica, sans-serif'>Best regards, <br>")
Next
For Each objUser in colUser    
   objTextFile.WriteLine("Сompany: <b>" & "&quot;" & objUser.company & "&quot;" & "</b><br>")
   Next
For Each objUser in colUser    
   objTextFile.WriteLine(objUser.displayName &"<br>")
Next
If objUser.title = "" Then
Else
For Each objUser in colUser    
   objTextFile.WriteLine(objUser.title & "<br>")
Next
End If
For Each objUser in colUser    
   objTextFile.WriteLine(objUser.l & ", " & objUser.streetAddress  & "<br>")
Next
For Each objUser in colUser    
   objTextFile.WriteLine("tel: " & objUser.telephoneNumber & "<br>")
Next
If objUser.otherTelephone = "" Then
Else
For Each objUser in colUser    
   objTextFile.WriteLine("internal: " & objUser.otherTelephone & "<br>")
Next
End If
For Each objUser in colUser    
   objTextFile.WriteLine("fax: " & objUser.facsimileTelephoneNumber & "<br>")
Next
If objUser.mobile = "" Then
Else
For Each objUser in colUser    
   objTextFile.WriteLine("mobile: " & objUser.mobile & "<br>")
Next
End If
If objUser.pager = "" Then
Else
For Each objUser in colUser    
   objTextFile.WriteLine("ICQ: " & objUser.pager & "<br>")
Next
End If
For Each objUser in colUser    
   objTextFile.WriteLine("<A href='mailto:" & objUser.mail & "'>" & "mailto:" & objUser.mail & "</A><br>")
Next
For Each objUser in colUser    
   objTextFile.WriteLine("<A href='http://" & objUser.wwwhomepage & "'>" & "http://" & objUser.wwwhomepage & "</A></font><br>")
   Next
For Each objUser in colUser    
   objTextFile.WriteLine("<br><table Width='100%'  border='0' cellpadding='5' cellspacing='0' bgcolor='#006699'><tr>")    
Next
For Each objUser in colUser    
   objTextFile.WriteLine("<td align='center' valign='middle'><a href='http://www.jettravel.ru' style='text-decoration:none;'>")
Next
For Each objUser in colUser    
   objTextFile.WriteLine("<b><font style='font-family:Verdana, Arial, Helvetica, sans-serif; color:#FFFFFF; font-Size:13px;'>Company</font></b></a></td></tr></table>")
Next
For Each objUser in colUser    
   objTextFile.WriteLine("</BODY></HTML>")
Next
'Case Else
'End Select
End If
objTextFile.Close

'Прописываем подпись в реестре

Const HKEY_CURRENT_USER = &H80000001

strComputer = "."

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
   strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Exchange\9375CFF0413111d3B88A00104B2A6676\00000001"
strValueName = "New Signature"
aValueData = Array(&H4a,&H00,&H65,&H00,&H74,&H00,&H54,&H00,&H72,&H00,&H61,&H00,&H76,&H00,&H65,&H00,&H6c,&H00,&H00,&H00)

oReg.SetBinaryValue HKEY_CURRENT_USER,strKeyPath,strValueName,aValueData

[/code]
Правильно заданный вопрос - это уже половина ответа.

Он здесь живет
Сообщения: 2394
Зарегистрирован: 19 дек 2003, 20:43
Откуда: Москва

Сообщение Harry33 » 03 окт 2007, 10:42

domovoy
А пример результата где?
Знания, которые нельзя применить - бесполезны

Администратор
Сообщения: 3444
Зарегистрирован: 19 дек 2003, 13:36
Откуда: Москва

Сообщение domovoy » 04 окт 2007, 11:38

Получается так:

С уважением,
Организация: "NetworkDoc.Ru"
Чистов Андрей Владимирович
Руководитель проекта
Строка адреса
телефон: +7 (495) ххххххх
внутренний: ххх
Факс: +7 (4хх) ххххххх
моб: 8 ххх хххххххх
ICQ: хххххх
mailto:user@domen.ru
http://www.networkdoc.ru

снизу синяя полоса с названием организации

Все строчки в коде можно отформатировать под нужный корпоративный шрифт, цвет и размер.

Для определённых полей типа ICQ задано что если не указано в АД строка убирается
Правильно заданный вопрос - это уже половина ответа.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11