share point開発 ファイル受信
TRANSCRIPT
Visual Studioで作成するSharePointアドイン開発リストのメール受信機能
2016年5月
SharePoint Onlineカスタマイズ
今回のお題
SharePoint Onlineのリストにメールを受信する
利用する仕組み
•プロバイダーホスト型• SendGridのWebhookを利用
SendGrid
• AzureのSendGridを購入(無料プランあり)してWebHookを設定
WebHookとは指定されたメールアドレスに送られたメールをWebサービスで処理できる機能
• MXレコードの設定などの設定も必要なので詳しくSendGridの資料を参考
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のリスト処理は一般的な範囲
サンプル実行の注意事項
<appSettings><add key=“ReciveMail.SiteUrl” value="サイトURL" /><add key=“ReciveMail.AccessUser” value="ユーザ" /><add key=“ReciveMail.AccessPassword” value="パスワード" />
</appSettings>
以下の設定が必須(値は環境に合わせたものを利用)
メールアドレスのマッピングはアドインのWeb画面で指定
できること/できないこと
•できること• メールのアーカイブとしてSharePointのリストが利用可能
• サイトメールボックよりもよりSharePointに統合するイメージ(SharePoint 2013のメール受信機能が近い)
•できないこと• ファイル名の長い添付ファイルはファイル名が短くなる場合がある(SendGridの制約)
まとめ
• メールとSharePoint Onlineの連携
• Azureで提供されている機能でSharePoint Onlineに足りない機能を補完することが可能
• サンプルコード• https://github.com/akihiroe/SharePointReciveMailAddin
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/