Share via


Beschränken der Größe einer Anlage auf eine Outlook-Email-Nachricht

In diesem Thema wird beschrieben, wie Sie ein verwaltetes Add-In für Outlook erstellen können, das das Senden von E-Mails abbricht, wenn die Gesamtgröße der Anlagen einen festen Grenzwert überschreitet.

Bereitgestellt von: Ken Getz, MCW Technologies, LLC

Eine bestimmte E-Mail-Nachricht kann eine oder mehrere Dateianlagen enthalten, und Sie können die Gesamtgröße von Anlagen in E-Mail-Nachrichten, die Sie senden, einschränken. Der Beispielcode in diesem Thema veranschaulicht, wie Sie das ItemSend-Ereignis in einem Outlook-Add-In behandeln und im Ereignishandler das Senden der E-Mail-Nachricht abbrechen können, wenn die kombinierte Größe aller Anlagen größer als ein bestimmter Wert ist (in diesem Beispiel 2 MB).

Das Outlook ItemSend-Ereignis empfängt als Parameter einen Verweis auf das zu sendende Element und eine boolesche Variable, die als Verweis übergeben wird und mit der Sie den Sendevorgang abbrechen können. Es liegt an Ihrem eigenen Code im Ereignishandler, um zu bestimmen, ob Sie das Ereignis abbrechen möchten. Legen Sie dazu den ParameterCancel auf True fest, wenn Sie das Ereignis abbrechen möchten.

Um in diesem Beispiel zu bestimmen, ob die Gesamtgröße der Anlagen größer als eine bestimmte Größe ist, durchläuft der Code jede Anlage in der Attachments-Auflistung des Elements. Für jedes Element ruft der Code die Size-Eigenschaft ab und summiert während der Schleife. Wenn die Summe jemals die Größe der maxSize-Konstante überschreitet, legt der Code die tooLarge Variable auf True fest und beendet die Schleife. Wenn die Variable true ist, benachrichtigt der tooLarge Code nach der Schleife den Benutzer und legt den Cancel-Parameter auf den Ereignishandler (der als Verweis übergeben wurde) auf True fest, wodurch Outlook das Senden des Elements abbricht.

Die folgenden Beispiele für verwalteten Code sind in C# und Visual Basic geschrieben. Um ein verwaltetes Codebeispiel von .NET Framework auszuführen, das ein Component Object Model (COM) aufrufen muss, müssen Sie eine Interopassembly verwenden, die verwaltete Schnittstellen definiert und den COM-Objekten in der Object Model-Typbibliothek zuordnet. Für Outlook können Sie Visual Studio und die Outlook Primary Interop Assembly (PIA) verwenden. Stellen Sie sicher, dass Sie die Outlook 2013 PIA installiert und eine Referenz zur Microsoft Outlook 15.0-Objektbibliothekkomponente in Visual Studio hinzugefügt haben, bevor Sie verwaltete Codebeispiele für Outlook 2013 ausführen.

Sie sollten die folgenden Codebeispiele in der ThisAddIn-Klasse eines Outlook-Add-Ins verwenden (mithilfe von Office Developer Tools für Visual Studio). Das Objekt der Anwendung im Code muss ein vertrauenswürdiges Outlook- Anwendungsobjekt sein, das von ThisAddIn.Globals bereitgestellt wird. Weitere Informationen zur Verwendung der Outlook-PIA zur Entwicklung verwalteter Outlook-Lösungen finden Sie auf MSDN unter Willkommen bei der Referenz zur primären Interopassembly von Outlook (PIA).

Der folgende Code zeigt, wie Sie das Senden einer E-Mail abbrechen, wenn die Gesamtgröße der Anlage den angegebenen Grenzwert überschreitet. Um diese Funktionalität zu veranschaulichen, erstellen Sie in Visual Studio ein neues verwaltetes Outlook-Add-In namens LimitAttachmentSizeAddIn. Ersetzen Sie den Code in ThisAddIn.cs oder ThisAddIn.vb durch den hier gezeigten Beispielcode.

using Outlook = Microsoft.Office.Interop.Outlook;
 
namespace LimitAttachmentSizeAddIn
{
    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
          Application.ItemSend +=new Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
        }
 
        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }
 
        void Application_ItemSend(object Item, ref bool Cancel)
        {
            // Specify the maximum size for the attachments. For this example,
            // the maximum size is 2 MB.
            const int maxSize = 2 * 1024 * 1000;
            bool tooLarge = false;
 
            Outlook.MailItem mailItem = Item as Outlook.MailItem;
            if (mailItem != null)
            {
                var attachments = mailItem.Attachments;
                double totalSize = 0;
                foreach (Outlook.Attachment attachment in attachments)
                {
                    totalSize += attachment.Size;
                    if (totalSize > maxSize)
                    {
                        tooLarge = true;
                        break;
                    }
                }
            }
            if (tooLarge)
            {
                // If the sum of the attachment sizes is too large, alert the user
                // and cancel the send.
                System.Windows.Forms.MessageBox.Show(
                    "The total attachment size is too large. Sending canceled.", 
                    "Outlook Add-In");
                Cancel = true;
            }
        }
 
        #region VSTO generated code
 
        /// <summary>
        /// Required method for Designer support - don't modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }
        
        #endregion
    }
}
Public Class ThisAddIn
 
    Private Sub ThisAddIn_Startup() Handles Me.Startup
 
    End Sub
 
    Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
 
    End Sub
 
    Private Sub Application_ItemSend(ByVal Item As Object, ByRef Cancel As Boolean) Handles Application.ItemSend
        ' Specify the maximum size for the attachments. For this example,
        ' the maximum size is 2 MB.
        Const maxSize As Integer = 2 * 1024 * 1000
        Dim tooLarge As Boolean = False
 
        Dim mailItem As Outlook.MailItem = TryCast(Item, Outlook.MailItem)
        If mailItem IsNot Nothing Then
            Dim attachments = mailItem.Attachments
            Dim totalSize As Double = 0
 
            For Each attachment As Outlook.Attachment In attachments
                totalSize += attachment.Size
                If totalSize > maxSize Then
                    tooLarge = True
                    Exit For
                End If
            Next attachment
        End If
 
        If tooLarge Then
            ' If the sum of the attachment sizes is too large, alert the user
            ' and cancel the send.
            System.Windows.Forms.MessageBox.Show(
                "The total attachment size is too large. Sending canceled.",
                "Outlook Add-In")
            Cancel = True
        End If
    End Sub
End Class

Siehe auch

Anfügen einer Datei an ein E-Mail-ElementAnfügen eines Outlook-Kontaktelements an eine Email NachrichtÄndern einer Anlage einer Outlook Email Nachricht

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.