電子メールとして送信するSharePointドキュメントライブラリファイル
メーカー: ビョルンFuruknap
合計再生回数:6676
ワード数:3335
これまで電子メールで誰かにSharePointアイテムを送信したいですか? いいえ? さて、どちらが第1が判明、他の誰かしかしおらず、彼らがどのようなので、私が手伝って思ったことを知らなかった。 そして、あなたは知っていること、それはあなた、次回に、アウトになるかもしれない、何をしたらいいのでしょうか? 今、あなたは戻っ日その事を書いて、ここに来て、ソリューションをピックアップしている変なノルウェー人を覚えています。 そして、あなたに、私は実際にあなたのためのソリューション全体を1つだけの簡単なステップで行うために使用する準備ができてアップロードしますいくつかの時間を保存します。
スコープ
[OK]をので、私たちのスコープです。 私は、SharePointライブラリから誰かに個々のファイルを送信するいくつかの方法があると思います。 ファイルが添付ファイルとして送信する必要がありますし、私は受信者のメールアドレスを入力すると、おそらくメッセージが必要です。
これを私は図書館の項目を、クリックライブラリ項目ホバリングに表示されるドロップダウンメニューに選択肢を追加する達成するために。
その項目にあるフォームを、私は受信者のアドレス、メッセージを記入することができます開く必要がありますクリックする。 そのページに私が[送信]ボタンを私がリストに返す必要があります。
さあ、本題に入りましょう。
ソリューションウォークスルー
私についてのために書いた私はこのプロジェクト私がしますWSPBuilder使用プロジェクトの記事Studioの基本的なセットアップのSharePointビジュアル 。 あなたはWSPBuilder Visual Studioの拡張機能がインストールされていることを確認、それはあなたの仕事のトンを保存し、SharePointの開発の喜びを確認します。 あまりにも多くの広告のために。
当社の成分:
- 1つのVisual Studio 2005または2008。
- WSPBuilder ExtensionsでのVisual Studio 。
- SharePointの任意のv3の味で、WSSまたはMOSSは
- 純反射
- SMTPサーバは、そのISPまたはあなた自身のような
ステップ1:セットアップ
Visual Studioで新しいWSPBuilderプロジェクトを作成することによってまず、スタート。 使用して何が好きです名前、たとえばSendAsEmail私がいる。 プロジェクトに新しい空の機能を追加します。 WSPBuilder拡張を使えば、単にマウスの右ソリューションエクスプローラをクリックしてアドイン>新しい項目のプロジェクトをクリックしての問題です。 アイテムが使用できる、空の機能が含まれます。 を書く素敵な説明と機能は、ウェブであることを確認スコープを持ちます。
第二に、クラスファイルを追加します。 私はプロジェクトのフォルダにFeatureCodeと呼ばれる私のクラスファイルを追加したい。 これはWSPBuilderまた、カスタムコードを追加するこのフォルダを使用するためです、私は小さなプロジェクトに1つの場所でこのような自分のコードを維持したい。 ので、右クリックし、プロジェクトを再度クリックしてアドイン>新規フォルダを行うには。 それはFeatureCode呼び出します。 次に、右クリックし、そのフォルダをクリックしてアドイン>クラス。 閲覧は、Visual C#のプロジェクト項目は、クラスファイルを検索します。 もう一度何が好きです、それを呼び出します。 私は私のSendAsEmail.csを呼び出します。
第三に、あなたのプロジェクトへの参照を追加します。 Windows SharePoint Servicesの(Microsoft.SharePoint.dllを右クリックし、ソリューションエクスプローラで参照を追加参照)とSystem.Web。
最後に、ソリューションに新しい空白のASPXページを作成します。 このページは私たちが入力する受信者のメールアドレスとメッセージテキストを使用するカスタムフォームになります。 ので、12 \ Templateフォルダにソリューションエクスプローラでプロジェクトの下、最初の右クリックを行うために。 をクリックしてアドイン>新しいフォルダとそれを呼び出すレイアウト。 いいえ、あなたは、この何かをコールすることはできません、それはレイアウトの名前でなければなりません。 このフォルダには、主に_layoutsにSharePointの仮想ディレクトリに対応し、我々はそこにどこでも利用できるように我々のファイルを配置する。 次に、右クリックし、レイアウトのフォルダをクリックしてアドイン>ニューアイテムです。 ここでも、Visual C#プロジェクトの項目を参照し、テキストファイルの項目を検索します。 ないASPXページの項目以外のWebサイトプロジェクトに追加することですが、我々はまだSendAsEmail.aspxファイル新しいテキストを名前を付けて1つを得ることができます。 あるいは、何か他の、重要なことは[何か]それを呼び出すことです。aspxの。
今実際の開発を開始します。
ステップ2:カスタムアクションの機能
あなたがステップ1で作成した空の機能を開きます。 閲覧ソリューションエクスプローラでフォルダにelements.xmlファイルを開きます。 elements.xmlファイルで、次のコードを追加します:
1 <?xmlバージョン="1.0"エンコーディング=は"utf - 8"?>
2 <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
3 <のCustomActionタイトル="メールを送るように"
4イド="SendAsEmailECB"
5 RegistrationType ="リスト"
6 RegistrationId ="101"
/ _layouts/images/MSG16.GIF 7画像URL =""
8場所="EditControlBlock"
9シーケンス="225">
10 <UrlAction Url="~site/_layouts/SendAsEmail.aspx?ItemId={ItemId}&ListId={ListId}" />
11 </のCustomAction>
12
13 </要素>
CustomAction要素は、SharePointのすべての周りのアクションメニューを変更することができます。 また私たちがしたい達成するために重要ないくつかの行がここにあります。 5行目は、RegistrationType、状態、我々はこれをしたいリストにリンクすると、6行目、RegistrationId、状態は、リストの型が101またはドキュメントライブラリのテンプレートからする必要があります。 あなた自身のリストを作成する場合は、その特定のリストにあなたが入力テンプレートと一致するRegistrationId変更することにより、カスタムアクションをリンクすることができますテンプレート。 リストは8、場所、状態、我々はEditControlBlockにこれを追加します。 それが我々のカスタムアクションを表示するホバーと、なめるメニューの名前です。
CustomActions要素の中我々は、URLアクション要素がある。 それは、単に何が私たちがクリックしてそのリンクを起こるはずSharePointを指示します。 あなたはURLを、それは2つのトークンを、ItemIdのとListId保持している属性を確認します。 これらのトークンは、で私たちのSharePointによって満たされる。 トークンは広くSharePointのように私はそれらを詳細にここに行く習慣使用され、これらの2つは、自己説明する必要があります。 おそらく、私は1日トークンの記事を書きます。
基本的に、それが機能コードのためにだ。 あなたが実際にビルドすることができますWSPBuilderを使用して、場合は、展開表示され、この機能は、メニュー項目をアクティブにします。 もちろん、私たちは実際にはまだ任意のコードを構築していないが、それは悲惨に失敗するようにします。 に移りましょう。
ステップは3:asp.netのページを作成するユーザーからの入力を取得する
レイアウトフォルダからSendAsEmail.aspxページを開きます。 今、私は非常に遠くデザイナーされてから、と私は確認されますので、私は設計からどのような場合にコードを分離すると信じて、この非常にデザイン面で簡単です。 私たちが行う必要がありますいくつかのことだが。
のASPXファイルに最初に、貼り付け、次のコードを。 あなたは、コードビューではなく、デザインビューで確認してください:
<>
<>
<asp:Content ID="main" runat="server" ContentPlaceHolderID="PlaceHolderMain">
の<table>
<tr>の<td> <asp:label runat="server" ID="lblSendTo" Text="Send to:"/> <は/>の<td> <は、ASP:TextBoxのにrunat ="サーバー"IDをtd ="txtSendTo" /> <は/> </トランジスタ>のTD
<tr>の<td> <asp:label runat="server" ID="lblMessage" Text="Message:"/> <は/>の<td> <は、ASP:TextBoxのにrunat ="サーバー"IDを="txtMessage"をテキストモードのTD ="複数行"行="5"は/> <は/> </トランジスタ>のTD
<tr>の<td> <asp:button runat="server" ID="btnSend" Text="Send message" /> <は/> </トランジスタ>のTD
</テーブル>
</ ASPの:コンテンツ>
第二に、アセンブリの厳密な名前を取得すると、そのにどこに[厳密な名前]は言う貼り付ける必要があります。 これを行うには、と私はあなたがまだWSPBuilderを使用して、ビルドは(メニュー->ビルド>ビルドソリューションヒットと仮定しています)。 を起動します。正味反射と、頻繁にマイドキュメントの\ Visual Studio 2005の\プロジェクト\ Solutionname \ ProjectNameの\ binに\デバッグに位置し、アセンブリのdllを開きます。 反射板の下部に今、あなたの厳密な名前が表示されます。
単に、すべての4つの部分全体に厳密な名前をコピーします。 貼り付け、このことは、[厳密な名前]を言うのコードに挿入します。
また、継承はPageディレクティブの属性を編集する必要があります。 私はNittiTre.SendAsEmailを書かれているので、名前空間と私は次の手順で書くことにするクラスの名前です。
ページ自体はフィットSharePointサイトのapplication.masterにされます。 このマスタページは、ContentPlaceHolderをPlaceHolderMain私たちがlblSendTo、lblMessage、btnSend、txtSendToとtxtMessageのIDでいくつかのコントロールを持つ単純なテーブルを置くと呼ばれる。 あなたは基本的にデザイナーに以上、このページを渡すことができますが、これらのIDは同じままを確認します。 これは重要な、我々はコードビハインドファイルにこれらのコントロールを開く配線となり、IDを我々は、ランタイム例外を取得すると一致しない場合です。
コードに移りましょう以上。
ステップは4:をお書きくださいクラスメールを送信する
最後に、いくつかのコーディングをする時間です。
先頭へビット読み、コードを作成するいくつかのusingステートメントを追加:によって開始
1システムを使用して;
2 System.Collections.Genericを使用して;
3します。using System.Text;
4 System.Web.UIを使用して;
5
6 system.net.mailのを使用して;
7 Microsoft.SharePointを使用して;
8を使用しトラクタ。
9を使用しSystem.Web.UI.WebControls;
第二に、LayoutsPageBaseからクラスを継承し、名前を我々はaspxページに追加のコントロールのIDに一致する必要がありますいくつかのコントロールを追加してください。 我々はまた、メールサーバの設定を保持するためにいくつかの変数を追加します:
10
11名前NittiTre
12(
13パブリッククラスSendAsEmail:LayoutsPageBase
14(
15
16保護されたラベルlblSendTo;
17保護されたラベルlblMessage;
18保護されたボタンbtnSend;
19
20保護のTextBox txtSendTo;
21保護のTextBox txtMessage;
22
23プライベート文字列のメールサーバは、=""; / /を追加何かここで必要!
24民間int型mailPort = 25;
25
ことを確認し、ライン23でSMTPサーバーのホスト名を追加します。
参照してください11行目と13? 私たちは、ASPXのページを継承ディレクティブをファイル配置すべきかの名前空間とクラスの名前を構成する。
我々は当社の全てのコントロールは、イベントハンドラwireupが完了する前に作成されることを確認する必要がありますイベントハンドラでボタンをしたいので。 良い場所は、これを行うにのOnLoadメソッド内にありますので、それをオーバーライドすることができます:
26保護されたオーバーライド無効読み込み時(EventArgs e)の
27(
28 EnsureChildControls();
29)
30
EnsureChildControlsは、CreateChildControlsの()は1回だけ呼ばれることを確認します。 後は再度、新しい子を作成しませんコードでEnsureChildControlsを呼び出すことが起こる場合はコントロールが追加されている場合かこのように、調べることの悩みを保存を制御します。
あなたはあなたのコントロールにイベントハンドラを追加する体験している場合、それらは、遅すぎるページのライフサイクルの中でイベントハンドラをフックので、しばしば発生しないこと。 多くの場合、イベントハンドラは発火の原因はそれだけで。 単純な修正プログラムは、ちょうどあなたのonloadイベントオーバーライドされたメソッドのEnsureChildControlsを呼び出します。
まあ、我々は、このメソッドをオーバーライドして我々はフック我々のイベントハンドラを構成する必要がある子コントロールを作成もちろん、CreateChildControlsのため、実際に。 私は、メッセージボックスにデフォルトのテキストを追加しました:
31ボイドのCreateChildControlsを(上書き保護)
32(
33 btnSend.Click + =新しいEventHandlerの(btnSend_Click);
34
35 txtMessage.Text ="こんにちは、このファイルは、SharePointから"送信されます。
36)
37
今私達のコードの大部分は、誰かがクリック、そのボタンを発生させますbtnSend_Click方法。 通知は33行目? それは私たちがフックをアップしました。 今のコードです。 私は何よりも起こっている、その後コメント記述するためにインラインコメントを書いている。
38ボイドbtnSend_Click(オブジェクト送信者、EventArgs e)の
39(
40 EnsureChildControls()は/ /既に呼ばれていますが、聞かせての確認...
41
42 / /はとクエリ文字列からアイテムのIDリストを表示して下さい
43を試し
44(
45 Guidは=新しいGUID(Server.UrlDecode(場合、Request.QueryString ["ListId "])); listId
46 int型は、ItemId = int.Parse(場合、Request.QueryString ["ItemIdの"]);
47
48 / /は、現在のWebから私たちのアイテムを検索
49 SPWebウェブ= this.Web;
50 SPListItem項目= web.Lists [listId]。GetItemById(ItemIdの);
51
52は/ / [スタート]我々のメールメッセージを構築する
53文字列senderMail = web.CurrentUser.Email;
54文字列recipientMail = txtSendTo.Text;
55 MailMessageメッセージ=新しいMailMessage(senderMail、recipientMail);
56 message.Body = txtMessage.Text;
57 message.Subject = item.DisplayName;
58
59は、/ /添付ファイルとしてファイルを追加
60 SPFILEのファイル= item.File;
61添付ファイル添付ファイル=新しい添付ファイル(file.OpenBinaryStream()、file.Name);
62 message.Attachments.Add(添付ファイル);
63
64は、/ / ...、最後に送信してください
65 SmtpClient smtpを=新しいSmtpClient(メールサーバ、mailPort);
66 smtp.Send(メッセージ);
67 Response.Clear();
68 Response.Redirectをは(web.Listsが)。DefaultViewUrl入力] listId [;
69)
70キャッチ
71(
72を投げる。
73)
74)
75)
76)
このコードのほとんどは、アイテム選択とし、フォームからの入力と一緒に、その情報からメールメッセージの作成を開始についての情報を見つける構成されます。
注意してください、私は追加していない多くのエラー処理。 これは悪いし、SmtpClient.Sendメソッドの呼び出しは特に、より良いエラー処理コードを追加する必要があります。 多くの事は間違って別のサーバーにメールを送信しようとすると行くことができます。 少なくともユーザーように、エラーメッセージを取得するすべての例外をスローすることを確認します。
すべてが計画通りにいけば、我々は戻って68行のリストにユーザーを送信します。
それはそれです。 何よりも。 のビルドでは、デプロイし、有効にしましょう。 ここに書かれ、私は圧縮ソリューションすべてを含むアップロードしました。 あなたがダウンロードすることができますからhttp://furuknap.googlepages.com/SendAsEmail.zip 。 あなたのSMTPサーバーを編集してください、それはあなたがする必要があるだけであるください。
ステップ4:展開
あなたが賢明と有料注目されている場合は、WSPBuilderを使用している。 ソリューションエクスプローラで、クリックしてWSPBuilder ->ビルドのWSPでいる場合は、右クリックしてプロジェクト。 次に、もう一度、同じことを行うと、今、あなたはWSPのを構築した、より多くのオプションが利用可能なメニューになるメモ。 をクリックして展開。 ハングしばらくして、ソリューションが展開されます。
次に、必要なお客様の機能を有効にします。 SharePointサイトを開いて、サイトの設定]に移動します。 ウェブの機能で、あなたのSendAsEmail機能があります。 をクリックし、アクティブドキュメントライブラリは、現在の添付ファイルとしてドキュメントライブラリのアイテムを送信する新機能を取得します。
ついに!
おめでとう、あなたがうまくいけば便利な機能を作成しました。 どうぞ、これで遊んで。 改善のための提案がされることがあります:
- 実装は、一度に(ヒント:フォルダは、単にコンテンツタイプしていては、特定のコンテンツタイプに適用するコントロールボックスを編集制限することができます)フォルダ内のすべてのドキュメントを送信する
- 既存の連絡先リストの名前をスペルミスを避けるために名前を受信者を見上げて
- 送信複数の宛先に
- CC、Bccの、暗号化など複数のメール関連のパラメータを追加
- これらのパラメータの保存ユーザー設定
運良く、私はどのように判明聞かせください。
資料出所: http://www.ArticleStreet.com/profile/bj%F8rn - furuknap - 7582.html
著者について
ビョルンFuruknapはノルウェーのマイクロソフトからのすべてのSharePointの認証を含む10以上のMCPのタイトルを保持します。 彼は、SharePointのプロジェクトに、ノルウェーのすべての大企業だけでなく働いてマイクロソフトのSharePointソリューションを開発するために雇われて有する。 彼はまた、ブログを書いブログを定期的にSharePointのSharePointと彼の雑誌http://furuknap.blogspot.com/ 。
の評価: 未評価















