share point開発 ファイル受信

9
Visual Studioで作成する SharePointアドイン開発 リストのメール受信機能 2016年5月 SharePoint Onlineカスタマイズ

Upload: akihiro-ehara

Post on 15-Apr-2017

214 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Share point開発 ファイル受信

Visual Studioで作成するSharePointアドイン開発リストのメール受信機能

2016年5月

SharePoint Onlineカスタマイズ

Page 2: Share point開発 ファイル受信

今回のお題

SharePoint Onlineのリストにメールを受信する

Page 3: Share point開発 ファイル受信

利用する仕組み

•プロバイダーホスト型• SendGridのWebhookを利用

Page 4: Share point開発 ファイル受信

SendGrid

• AzureのSendGridを購入(無料プランあり)してWebHookを設定

WebHookとは指定されたメールアドレスに送られたメールをWebサービスで処理できる機能

• MXレコードの設定などの設定も必要なので詳しくSendGridの資料を参考

Page 5: Share point開発 ファイル受信

WebHookの処理[HttpPost]public async Task<HttpResponseMessage> Post(){

var root = System.IO.Path.GetTempPath();var provider = new MultipartFormDataStreamProvider(root);try{

await Request.Content.ReadAsMultipartAsync(provider);SaveMail(provider);

…}private void SaveMail(Collection<MultipartFileData> files, Email email){

var siteUrl = ConfigurationManager.AppSettings.Get("ReciveMail.SiteUrl");var user = ConfigurationManager.AppSettings.Get("ReciveMail.AccessUser");var pass = ConfigurationManager.AppSettings.Get("ReciveMail.AccessPassword");

var settings = (MailSettings)HttpContext.Current.Application["MailSettings"];using (var ctx = CreateContext(siteUrl, user, pass)){

var envelope = JsonConvert.DeserializeObject<dynamic>(email.Envelope);foreach (string toUser in envelope.to){

var list = ctx.Web.Lists.GetByTitle(rule.ListTile);if (list == null) continue;var charsetsObj = JsonConvert.DeserializeObject<dynamic>(email.Charsets);

var itemCreateInfo = new ListItemCreationInformation();var item = list.AddItem(itemCreateInfo);item["Title"] = ConvertToUtf8(email.Subject, Encoding.GetEncoding((string)charsetsObj.subject));

今回はほぼこの処理がすべて。SendGridで受けたメールからタイトル

や本文・添付を取り出してリストに追加する

SendGridの処理は独特だがSharePointのリスト処理は一般的な範囲

Page 6: Share point開発 ファイル受信

サンプル実行の注意事項

<appSettings><add key=“ReciveMail.SiteUrl” value="サイトURL" /><add key=“ReciveMail.AccessUser” value="ユーザ" /><add key=“ReciveMail.AccessPassword” value="パスワード" />

</appSettings>

以下の設定が必須(値は環境に合わせたものを利用)

メールアドレスのマッピングはアドインのWeb画面で指定

Page 7: Share point開発 ファイル受信

できること/できないこと

•できること• メールのアーカイブとしてSharePointのリストが利用可能

• サイトメールボックよりもよりSharePointに統合するイメージ(SharePoint 2013のメール受信機能が近い)

•できないこと• ファイル名の長い添付ファイルはファイル名が短くなる場合がある(SendGridの制約)

Page 8: Share point開発 ファイル受信

まとめ

• メールとSharePoint Onlineの連携

• Azureで提供されている機能でSharePoint Onlineに足りない機能を補完することが可能

• サンプルコード• https://github.com/akihiroe/SharePointReciveMailAddin

Page 9: Share point開発 ファイル受信

http://www.proaxia-consulting.co.jp

Azure&SharePointアプリケーション開発についてのお問合せ[担当] [email protected]

SharePoint Onlineとファイルサーバーを統合するCloud Storage Lighthttps://www.cloudstoragelight.com

SharePoint 上のファイルをエクスプローラ感覚でサクサク操作するSharePointエクスプローラhttps://www.cloudstoragelight.com/sharepointexplorer/