Ограничение размера вложения до сообщения 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 и обратная связь.