Ограничить размер вложения сообщением электронной почты Outlook
В этом разделе описывается возможность создания управляемой надстройки для Outlook, которая отменяет отправку электронной почты, если общий размер вложения превышает фиксированный предел.
Предоставлено: Ken Getz, MCW Technologies, LLC
Заданное сообщение электронной почты может содержать один или несколько вложений файлов, и может потребоваться ограничить общий размер вложений в сообщениях электронной почты, которые вы отправляете. Пример кода в этом разделе демонстрирует, как можно обрабатывать событие ItemSend в надстройке Outlook, а в обработнике событий отменять отправку сообщения электронной почты, если совокупный размер всех вложений превышает определенное значение (2 МБ, в этом примере).
Событие Outlook ItemSend получает в качестве параметров ссылку на отправленный элемент, а также переменную Boolean, которая передается по ссылке и которая позволяет отменить операцию отправки. Решение об отмены события зависит от вашего собственного кода в обработнике событий. Это необходимо, установив параметр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 к сообщению электронной почты Изменить вложение сообщения электронной почты Outlook сообщения электронной почты
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.