Figyelmeztetések küldése a megosztott feladatokra vonatkozó feladatokról, ingyenes adminisztrátori feljegyzések

A SharePoint feladatok a tételek külön "osztályában" jelennek meg. Nemcsak előre megkonfigurált területeket, hanem "szolgálnak" a munkafolyamatokat. Előre konfigurált e-mail üzenet sablonokat is tartalmaznak, amelyek a tényleges értesítés mellett a feladatot közvetlenül a levelezőprogramból is szerkeszthetik (természetesen, ha ez utóbbi támogatja ezt a funkciót).

Ez a sajátosság nagyon kényelmes, mert a felhasználónak nem kell megnyitnia a böngészőt a rutin műveletek elvégzéséhez. Ebben az esetben mind a feladatok szerkesztésének szabványos formáit, mind az InfoPath-ban (beleértve a beépített kódot) létrehozott formákat betöltik.

Ez minden rendben van, amíg nem akarjuk testre szabni a levél szövegét. Ezt nem könnyű elvégezni, különösen, ha szöveges függőségre van szükség az aktuális webhelyen stb. Ezenkívül alapértelmezés szerint riasztásokat küldenek a feladat létrehozásához, módosításához és bezárásához. Gyakran csak bizonyos meghatározott eseményekre van szükség. Ezért sokan letiltják az automatikus riasztásokat, és létrehozzák saját riasztási rendszerüket. Számos megvalósítás létezik (a munkafolyamat vagy az eseményfeldolgozás alapján), de mindegyiknek van egy hátránya - a levélkiszolgáló feladat-szerkesztési funkciója elvész.

mert a felhasználóink ​​hozzászoktak az Outlook programhoz tartozó feladatok szerkesztéséhez, meg kellett értenünk, hogyan működik.

Kiderült, hogy mindent elég egyszerű - a feladat szerkesztése a protokollra épül [MS-OSALER]: Riasztások Interop protokoll specifikáció.

2 /// A funkció elküldi a feladatüzeneteket az MS-OSALER protokoll szerint

4 /// aktuális csomópont

5 /// a levél szövege

6 /// kit

7 /// Feladat lista eleme

8 /// [true] ha sikeres vagy hibás hiba esetén [false, "Error_Message"]

9 nyilvános objektum [] SendMail (SPWeb web, string HtmlBody, karakterlánc, SPListItem TaskItem)

13 // Ez a rész a System.Net.MailAddress segítségével érhető el

15 // A webhely beállításainak megszerzése. Ezek közül be kell állítanunk a kimenő leveleket

16 SPWebApplication webApp = web.Site.WebApplication;

17 // Hozzon létre egy e-mail üzenetet

18 MailMessage mess = új MailMessage ();

20 mess.From = új MailAddress (webApp.OutboundMailSenderAddress, web.Title);

22 mess.ReplyTo = új MailAddress (webApp.OutboundMailReplyToAddress);

23 // a test UTF8 formátumban van

24 mess.BodyEncoding = Kódolás .UTF8;

25 // és HTML formátumban

26 mess.IsBodyHtml = true;

27 // Írja be a levél testét, lehet abszolút semmi. Bár üres

28 mess.Body = HtmlBody;

29 // kinek küldjük a levelet

31 // A levél tárgyának kódolása

32 mess.SubjectEncoding = Kódolás .UTF8;

33 // A téma maga is lehet.

34 mess.Subject = "Feladatok -" + TaskItem.Title;

Következõen vannak olyan paraméterek, amelyek az MS-OSALER szerinti fejléceket szolgálják

37 // A csatolás egy MIME-implementáció, ezért üres csatolmányt használunk a MIME-fejlécek létrehozásához

38 Attachment at = új csatolás (new System.IO, MemoryStream (0), "");

39 at.ContentType = új System.Net.Mime.ContentType ("text / html; charset = utf-8");

40 at.TransferEncoding = System.Net.Mime.TransferEncoding.QuotedPrintable;

41 // Hozza létre a domainet az MessageId létrehozásához. Ezt az értéket módosíthatja.

42 húr domain = webApp.OutboundMailSenderAddress.Remove (0, webApp.OutboundMailSenderAddress.LastIndexOf ( '@'));

// Üzenetazonosító létrehozása. Ez a kötelező részből és a véletlenszerű üzenetazonosítóból áll

44 // (ez utóbbi teszi a levélkiszolgálót, ha a MessageID nem szerepel kifejezetten a fejlécekben)

45 mess.Headers.Add ("Message-Id." "<3BD50098E401463AA228377848493927" + Guid .NewGuid().ToString( "D" )+domain+ ">„);

47 // Ez a paraméter is megváltoztatható, a javasolt protokollban (SHOULD), de ahol használtam, nem találtam

48 // ugyanúgy, mint a Sharepoint alapértelmezésben - a feladat leírása

49 mess.Headers.Add ("X-Sharing-Title" Ez a .ToBase64 (TaskItem ["Body"] .ToString ()));

50 // Itt vannak azok a paraméterek, amelyeket nem lehet megváltoztatni.

51 mess.Headers.Add ("X-AlertTitle" Ez a .ToBase64 ("Rendszer"));

52 mess.Headers.Add (. "X-AlertId" "# 123; 93A2F525-F664-4B02-9AD6-07851B1381C4 # 125; # 123; 791979F1-2AB1-427D-9722-41B08012172B # 125;");

53 mess.Headers.Add ("Content-Class". "MSWorkflowTask");

55 mess.Headers.Add ("X-AlertWebUrl" Ez a .ToBase64 (web.Url));

56 mess.Headers.Add ("X-AlertServerType". "STS");

58 mess.Headers.Add ("X-AlertWebSoap") Ez a .ToBase64 (web.Url + "/_vti_bin/alerts.asmx"));

. 59 mess.Headers.Add ( "X-megosztása-Config-url" "stssync: // STS / ver = 1.1type = taskscmd = add-folderbase-url =?" + Uri.EscapeDataString (web.Url) + " lista-url = "+ Uri.EscapeDataString (" Lists / Feladatok ") +" GUID = "+ Uri.EscapeDataString (TaskItem.ParentList.ID.ToString (" D „)));

60 mess.Headers.Add ("X-Sharing-Remote-Uid". TaskItem.ParentList.ID.ToString ("D"));

61 mess.Headers.Add ("X-Sharing-WssBaseUrl" Ez a .ToBase64 (web.Url));

62 mess.Headers.Add ("X-Sharing-ItemId" Ez a ToBase64 (TaskItem.ID.ToString ()));

64 // A fejléc kialakul, elküldheted.

66 SmtpClient kliens = új SmtpClient (webApp.OutboundMailServiceInstance.Server.Address);

67 client.Credentials = CredentialCache.DefaultNetworkCredentials;

69 // Ez egy tesztfunkció, ezért a feldolgozás rendkívül primitív

70 visszatérés új objektumhoz [] # 123; igaz # 125 ;;

72 fogás (Kivétel er)

73 # 123; új objektum visszaadása [] # 123; hamis, er.Message # 125 ;; # 125;

77 string ToBase64 (string InputString)

// Nagyjából. Talán van egy gyönyörű megvalósítás. De ez pontosan működik.

80 / / akkor sem lenne rossz, ha a kivétel kezelését

81 visszatérés "=? Utf-8? B?" + Rendszer. Konvertálás .ToBase64String (UTF8Encoding .UTF8.GetBytes (InputString)) + "? =";

Kapcsolódó cikkek