VBAおよびPHPを使用してMicrosoft Outlook 2010で大きなファイルを送信する

Microsoft Outlook 2010で大きなファイルを送信する問題を解決する方法を共有したいと思います(2013年以降も機能すると思います)。

したがって、初期条件:

-MS Exchange Server 2010-社内-アクセス管理者なし-作成者は単なるユーザー

-手紙の総量の制限10MB

-DMZにはいくつかのLinux Webサーバーがあり、企業イントラネットへの管理アクセスがあります。

必要です:

-大きなファイル(非常に大きなファイル)を転送するための便利なメカニズムを編成する

-サードパーティのプロバイダーを使用して情報を保存しないでください



最初に考えたのは、Dropboxのようなサービスを使用すること、または、ownCloudのような自己ホスト型のサービスを使用することでした。 ただし、添付ファイルだけにこれをすべて展開することは不適切と思われました。



さらに、Outlook内に添付する方法はまだ不明です。 ここでは、たとえばYouSendItや他の同様のサービスなど、提供するものなど、プラグインを使用したオプションがより適しています。 次のようになります:Outlookでは、クリックするとサービスウィンドウがポップアップし、大きな添付ファイルがアップロードされるボタンが表示されます。ダウンロードが完了すると、そのリンクが生成され、メッセージの本文に挿入されます。 このタイプのサービス、およびそれに応じてプラグインを使用することはできないため、それらのアナログを使用します。



ステージ1.オンラインファイル共有のサービス

この種のプロジェクトにはオープンソースライセンスがありますので、非常に簡単です。 PLUploadを選択し、DMZのLinuxサーバーの1つにインストールしました。 スクリプトはわずかに変更されました。つまり、

-ほぼここで説明されているように、企業イントラネットを介して(SSO認証をサポートして)パスワードが要求されるか、セッションが検証されます。

-ファイルのアップロードが成功すると、ダウンロード用に生成されたURLが非表示のtxtList要素に追加されます(これが必要になる理由は、次のステップから明らかになります)

-ディスクスペースを節約するために、古いリンクを削除するためにcronも追加しました



サイズの制限はPHPとWebサーバーの設定に依存します。ファイルごとに2 GBの制限を設定します(一度に最大10個のファイルを添付できます)。



ステージ2.クライアント部分

理想的には、これはOutlookプラグインである必要がありますが、プラグインの作成がそれほど簡単ではないと理解している限り、これまでのところ時間を費やしません...

代わりに、通常のVBAプロジェクトを作成し、Outlookのツールバーにねじ込みました。



プロジェクトは、配置されるフォームで構成されます。

-タイトル添付の標準ボタン

-標準コントロールWebBrowser(実際にはフレームIE)



こんな感じ





次はVisual Basicのすべてのコードです。もし誰かが気が狂っていないように思えるなら、私は前もって謝罪します。



VBAプロジェクトコード
Private Sub CommandButton1_Click() If WebBrowser1.Document.all("txtList").Value = "" Then MsgBox "No files have been uploaded" + vbNewLine + "Please make sure you click on 'Start upload' and upload is 100% completed" Else On Error GoTo MessageACT Set objMail = Outlook.Application.ActiveInspector.CurrentItem If objMail.BodyFormat = olFormatHTML Then ' objMail.HTMLBody = objMail.HTMLBody + "<hr>Attached" + Attachment1 incMess = "" Attachment1 = WebBrowser1.Document.all("txtList").Value Expires1 = WebBrowser1.Document.all("txtDate").Value preText = "<font size=1>------------------------------------</font><br><b>Large Attachments</b><br>" + vbNewLine posttext = vbNewLine + "<br><font size=1>Attachments added via filesharingserverindmz.cool <br> powered by owners </font><br>-------------------" filesAtt = Split(Attachment1, "|") For Each itm In filesAtt If itm <> "" Then ATTmsg = ATTmsg + "<a href='https://filesharingserverindmz.cool/get/" + itm + "'>https://filesharingserverindmz.cool/get/" + itm + "</a><br>" + vbNewLine End If Next itm incMess = preText + ATTmsg + vbNewLine + "<br>the attachments will be valid for <b>" + Expires1 + "</b> days from now" + vbNewLine + posttext objMail.HTMLBody = vbNewLine + incMess + objMail.HTMLBody Else incMess = "" Attachment1 = WebBrowser1.Document.all("txtList").Value Expires1 = WebBrowser1.Document.all("txtDate").Value preText = "------------------------------------" + vbNewLine + " Large Attachments " + vbNewLine posttext = vbNewLine + " Attachments added via filesharingserverindmz.cool " + vbNewLine + "powered by owners " + vbNewLine + "------------------------------------" filesAtt = Split(Attachment1, "|") For Each itm In filesAtt If itm <> "" Then ATTmsg = ATTmsg + "https://filesharingserverindmz.cool/get/" + itm + vbNewLine End If Next itm incMess = preText + ATTmsg + vbNewLine + "the attachments will be valid for " + Expires1 + " days from now" + vbNewLine + posttext objMail.Body = vbNewLine + incMess + objMail.Body End If Unload Me End If Exit Sub MessageACT: MsgBox "This button only works when composing email messages" End Sub Private Sub CommandButton2_Click() incMess = "" Attachment1 = WebBrowser1.Document.all("txtList").Value Expires1 = WebBrowser1.Document.all("txtDate").Value preText = "------------------------------------<br><b>Large Attachments</b><br>" + vbNewLine posttext = vbNewLine + "<br><font size=1>Attachments added via filesharingserverindmz.cool <br> powered by UNICEF Geneva ITSSD </font><br>------------------------------------" filesAtt = Split(Attachment1, "|") For Each itm In filesAtt If itm <> "" Then ATTmsg = ATTmsg + "<a href='https://filesharingserverindmz.cool/get/" + itm + "'>https://filesharingserverindmz.cool/get/" + itm + "</a><br>" + vbNewLine End If Next itm incMess = preText + ATTmsg + vbNewLine + "<br>the attachments will be valid for <b>" + Expires1 + "</b> days from now" + vbNewLine + posttext LargeAttachments.WebBrowser1.Document.Body.innerHTML = "<body><font style='font-size:11px'>" + incMess + "</font></body>" LargeAttachments.Show End Sub Private Sub CommandButton3_Click() WebCode1.Visible = True CommandButton2.Visible = True CommandButton1.Visible = False WebBrowser1.Visible = False WebCode1.Navigate2 "https://filesharingserverindmz.cool/uploader/upload/plugin/upload.php" incMess = "" Attachment1 = WebBrowser1.Document.all("txtList").Value Expires1 = WebBrowser1.Document.all("txtDate").Value preText = "------------------------------------<br><b>Large Attachments</b><br>" + vbNewLine posttext = vbNewLine + "<br><font size=1>Attachments added via filesharingserverindmz.cool <br> powered by UNICEF Geneva ITSSD </font><br>------------------------------------" filesAtt = Split(Attachment1, "|") For Each itm In filesAtt If itm <> "" Then ATTmsg = ATTmsg + "<a href='https://filesharingserverindmz.cool/get/" + itm + "'>https://filesharingserverindmz.cool/get/" + itm + "</a><br>" + vbNewLine End If Next itm incMess = preText + ATTmsg + vbNewLine + "<br>the attachments will be valid for <b>" + Expires1 + "</b> days from now" + vbNewLine + posttext WebCode1.Document.Body.innerHTML = "<html><body><font style='font-size:11px'>" + incMess + "</font></body></html>" WebCode1.SetFocus End Sub Private Sub UserForm_Activate() LargeAttachments.WebBrowser1.Navigate2 "about:blank" WebBrowser1.Navigate2 "https://filesharingserverindmz.cool/uploader/upload/plugin/upload.php" End Sub
      
      









上記のコードで

-filesharingserverindmz.cool-PHPスクリプトPLUpload-aがホストされているドメイン

-CommandButton1-接続ボタン

-WebBrowser1-コントロールWebBrowser

-LargeAttachments-フォーム名



次に、モジュールを作成し、これに貼り付けます:

 Sub Attachment() LargeAttachments.Show End Sub
      
      







次に、このマクロをボタンの形でツールバーに接続します(注意!一般的な文字ではなく、文字を作成するときに表示されるツールバーに)

次のようになります。





使用すると非常に便利です。以下にサンプルビデオを示します。









それでも、これは既成のソリューションではなく、実装のために大幅に終了する必要があります。 この記事の目的は、アイデア自体を示し、実装例で説明することでした。



All Articles