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 ///
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)) + "? =";