Ограничение размера вложения до сообщения outlook Email

В этом разделе описывается, как создать управляемую надстройку для Outlook, которая отменяет отправку сообщений электронной почты, если общий размер вложения превышает фиксированное ограничение.

Предоставляется: Кен Гетц, MCW Technologies, LLC

Данное сообщение электронной почты может содержать одно или несколько файловых вложений, и вам может потребоваться ограничить общий размер вложений в отправленных сообщениях электронной почты. В примере кода в этом разделе показано, как обработать событие ItemSend в надстройке Outlook, а в обработчике событий отменить отправку сообщения электронной почты, если совокупный размер всех вложений превышает определенное значение (в этом примере 2 МБ).

Событие Outlook ItemSend получает в качестве параметров ссылку на отправляемый элемент и логическую переменную, передаваемую по ссылке и позволяющую отменить операцию отправки. Это зависит от вашего кода в обработчике событий, чтобы определить, хотите ли вы отменить событие; Для этого задав для параметраCancel значение True , если вы хотите отменить событие.

В этом примере, чтобы определить, превышает ли общий размер вложения определенный размер, код выполняет цикл по каждому вложению в коллекции Вложений элемента. Для каждого элемента код получает свойство Size , суммируя по мере циклов. Если сумма когда-либо превышает размер константы maxSize , код задает для переменной tooLargeзначение True и завершает цикл. Если после цикла tooLarge переменная имеет значение True, код оповещает пользователя и задает параметр Cancel обработчику событий (который был передан по ссылке) значение True, в результате чего Outlook отменит отправку элемента.

Следующие примеры управляемого кода написаны на C# и Visual Basic. Для запуска примера управляемого кода для .NET Framework, который вызывает модель COM, необходимо использовать сборку взаимодействия, которая определяет и сопоставляет управляемые интерфейсы с объектами COM в библиотеке типов объектной модели. Для Outlook можно использовать Visual Studio и первичную сборку взаимодействия Outlook (PIA). Перед запуском примеров управляемого кода для Outlook 2013 убедитесь, что вы установили Outlook 2013 PIA и добавили ссылку на компонент Microsoft Outlook 15.0 Object Library в Visual Studio.

Используйте следующие примеры кода в классе ThisAddIn надстройки Outlook (с помощью инструментов разработчика Office для Visual Studio). Объект Application в коде должен быть доверенным объектом Application Outlook, предоставленным объектом ThisAddIn.Globals. Дополнительные сведения об использовании Outlook PIA для разработки управляемых решений Outlook см. в статье Справочник по основной сборке взаимодействия Outlook на веб-сайте MSDN.

В следующем коде показано, как отменить отправку сообщения электронной почты, если общий размер вложения превышает указанное ограничение. Чтобы продемонстрировать эту функцию, в Visual Studio создайте управляемую надстройку Outlook с именем LimitAttachmentSizeAddIn. Замените код в Файле ThisAddIn.cs или ThisAddIn.vb примером кода, показанного здесь.

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

См. также

Вложение файла к почтовомуэлементу Присоединение элемента контакта Outlook к сообщению EmailИзменение вложения сообщения outlook Email

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.