Partage via


Limiter la taille d’une pièce jointe à un message Email Outlook

Cette rubrique explique comment créer un complément managé pour Outlook qui annule l’envoi d’e-mails si la taille totale des pièces jointes est supérieure à une limite fixe.

Fourni par : Ken Getz, MCW Technologies, LLC

Un message électronique donné peut contenir une ou plusieurs pièces jointes, et vous souhaiterez peut-être limiter la taille totale des pièces jointes dans les messages électroniques que vous envoyez. L’exemple de code de cette rubrique montre comment gérer l’événement ItemSend dans un complément Outlook et, dans le gestionnaire d’événements, annuler l’envoi du message électronique si la taille combinée de toutes les pièces jointes est supérieure à une valeur spécifique (2 Mo, dans cet exemple).

L’événement Outlook ItemSend reçoit comme paramètres une référence à l’élément envoyé et une variable booléenne qui est passée par référence et qui vous permet d’annuler l’opération d’envoi. C’est à votre propre code dans le gestionnaire d’événements de déterminer si vous souhaitez annuler l’événement ; pour ce faire, définissez le paramètreCancel sur True si vous souhaitez annuler l’événement.

Dans cet exemple, pour déterminer si la taille totale des pièces jointes est supérieure à une taille spécifique, le code effectue une boucle dans chaque pièce jointe de la collection Attachments de l’élément. Pour chaque élément, le code récupère la propriété Size , en additionnant au fur et à mesure qu’elle effectue une boucle. Si la somme dépasse la taille de la constante maxSize, le code affecte la valeur True à la tooLarge variable et quitte la boucle. Après la boucle, si la variable a la tooLarge valeur True, le code alerte l’utilisateur et définit le paramètre Cancel sur le gestionnaire d’événements (qui a été passé par référence) sur True, ce qui entraîne l’annulation de l’envoi de l’élément par Outlook.

Les exemples de code managé suivants sont écrits dans C# et Visual Basic. Pour exécuter un exemple de code managé .NET Framework qui doit appeler un modèle COM (Component Object Model), vous devez utiliser un assembly d’interopérabilité qui définit et mappe des interfaces managées avec des objets COM dans la bibliothèque de types de modèle objet. Pour Outlook, vous pouvez utiliser Visual Studio et l’assembly d’interopérabilité de base (PIA) d’Outlook. Avant d’exécuter des exemples de code managé pour Outlook 2013, assurez-vous que vous avez installé le PIA d’Outlook 2013 et que vous avez ajouté une référence au composant Bibliothèque d’objets Microsoft Outlook 15.0 dans Visual Studio.

Vous devez utiliser les exemples de code suivants dans la classe ThisAddIn d’un complément Outlook (à l’aide des outils de développement Office pour Visual Studio). L'objet Application dans le code doit être un objet Application Outlook approuvé fourni par ThisAddIn.Globals. Pour plus d’informations sur l’utilisation de l’assembly PIA Outlook pour développer des solutions Outlook managées, consultez bienvenue dans la référence de l’assembly d’interopérabilité principal Outlook sur MSDN.

Le code suivant montre comment annuler l’envoi d’un e-mail si la taille totale des pièces jointes est supérieure à la limite spécifiée. Pour illustrer cette fonctionnalité, dans Visual Studio, créez un complément Outlook managé nommé LimitAttachmentSizeAddIn. Remplacez le code dans ThisAddIn.cs ou ThisAddIn.vb par l’exemple de code présenté ici.

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

Voir aussi

Joindre un fichier à un élément de courrierJoindre un élément de contact Outlook à un message EmailModifier une pièce jointe d’un message Email Outlook

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.