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.