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.