کار با گزینه‌های رأی‌گیری و واکنش‌ها در MSG

ایجاد گزینه‌های رأی‌گیری با MapiMessage

Microsoft Outlook ویژگی ایجاد نظرسنجی هنگام نوشتن یک ایمیل جدید را فراهم می‌کند، که به کاربران امکان افزودن گزینه‌های رأی‌گیری مانند بله، خیر، شاید و غیره را می‌دهد. Aspose.Email عملکرد مشابهی را هنگام ایجاد پیام Outlook به‌صورت برنامه‌نویسی فراهم می‌کند. The FollowUpOptions کلاس فراهم می‌کند VotingButtons ویژگی‌ای که می‌توان برای تنظیم یا دریافت گزینه‌های رأی‌گیری استفاده کرد. MapiMessage به کلاسی در فضای نام Aspose.Email اشاره دارد که نمایانگر یک پیام ایمیل در قالب رابط برنامه‌نویسی پیام‌رسان (MAPI) است که معمولاً توسط Microsoft Outlook استفاده می‌شود. با استفاده از کلاس MapiMessage، توسعه‌دهندگان می‌توانند دکمه‌های نظرسنجی را به ایمیل اضافه کنند. این مقاله یک مثال دقیق از نحوه ایجاد یک MapiMessage با گزینه‌های رأی‌گیری برای ساخت نظرسنجی ارائه می‌دهد.

ایجاد نظرسنجی‌ها

کد نمونه زیر نحوه ایجاد یک نظرسنجی در پیام Outlook با استفاده از Aspose.Email را نشان می‌دهد. FollowUpManager کلاس امکان تنظیم گزینه‌های رأی‌گیری را فراهم می‌کند.

// Create a MapiMessage with the sender, recipient, subject, and body
var msg = new MapiMessage(
    "from@test.com",
    "to@test.com",
    "Flagged message",
    "Make it nice and short, but descriptive. The description may appear in search engines' search results pages..."
);

// Create FollowUpOptions and set the voting buttons
var options = new FollowUpOptions
{
    VotingButtons = "Yes;No;Maybe;Exactly!"
};

// Apply the follow-up options to the message
FollowUpManager.SetOptions(msg, options);
  • FollowUpOptions: ویژگی‌هایی را برای پیکربندی اقدامات پیگیری مانند دکمه‌های رأی‌گیری فراهم می‌کند.
  • VotingButtons: ویژگی رشته‌ای که در آن گزینه‌های مختلف رأی‌گیری با نقطه‌ویرگول جدا شده‌اند.
  • FollowUpManager.SetOptions: گزینه‌های پیگیری مشخص‌شده را بر پیام اعمال می‌کند.

خواندن گزینه‌های رأی‌گیری

برای بازیابی گزینه‌های رأی‌گیری از یک MapiMessage، می‌توانید استفاده کنید GetOptions متد. این متد نه تنها دکمه‌های رأی‌گیری را بازیابی می‌کند بلکه می‌تواند پارامترهای اضافی مانند دسته‌بندی‌ها را در صورت نیاز ارائه دهد.

// Retrieve follow-up options from the message
var options = FollowUpManager.GetOptions(msg);

// Voting buttons are returned as a string with a semicolon separator
string votingButtons = options.VotingButtons;

// Display the voting buttons
Console.WriteLine($"Voting Options: {votingButtons}");
  • GetOptions: مقدار FollowUpOptions شیء‌ای از پیام که شامل دکمه‌های رأی‌گیری و احتمالاً سایر ویژگی‌ها می‌شود.
  • VotingButtons: گزینه‌ها به‌صورت رشته‌ای جدا شده با نقطه‌ویرگول استخراج می‌شوند که نمایش یا دستکاری آسان را فراهم می‌کند.

خواندن دکمه‌های رأی‌گیری

اگر فقط نیاز دارید به دکمه‌های رأی‌گیری به‌عنوان لیستی از رشته‌های جداگانه دسترسی پیدا کنید، می‌توانید از GetVotingButtons متد که آنها را به‌صورت مجموعه برمی‌گرداند.

// Read only voting buttons as a collection of string values
var votingButtons = FollowUpManager.GetVotingButtons(msg);

// Display each voting button
foreach (var button in votingButtons)
{
    Console.WriteLine($"Voting Button: {button}");
}
  • GetVotingButtons: مجموعه‌ای از رشته‌های دکمهٔ رأی‌گیری را برمی‌گرداند که گردش در آنها و انجام عملیات مانند نمایش یا تغییر آسان است.

افزودن دکمه‌های رأی‌گیری

شما می‌توانید دکمه‌های رأی‌گیری اضافی را به یک پیام موجود اضافه کنید با استفاده از AddVotingButton متد. این می‌تواند برای به‌روزرسانی پویا گزینه‌های رأی‌گیری مفید باشد.

// Add a new voting button to the existing message
FollowUpManager.AddVotingButton(msg, "Indeed!");
  • AddVotingButton: گزینهٔ رأی‌گیری جدیدی به دکمه‌های رأی‌گیری موجود پیام اضافه می‌کند و امکان سفارشی‌سازی پویا نظرسنجی‌ها را فراهم می‌آورد.

حذف دکمه‌های رأی‌گیری

ممکن است بخواهید دکمه‌های رأی‌گیری خاصی را حذف کنید یا تمام دکمه‌ها را از یک پیام پاک کنید. کد زیر هر دو عمل را با استفاده از RemoveVotingButton و ClearVotingButtons متدها.

// Delete a specific voting button
FollowUpManager.RemoveVotingButton(msg, "Exactly!");

// Or delete all voting buttons from the MapiMessage
FollowUpManager.ClearVotingButtons(msg);
  • RemoveVotingButton: دکمه رأی‌گیری خاصی را بر اساس نام حذف می‌کند.
  • ClearVotingButtons: تمام دکمه‌های رأی‌گیری را حذف می‌کند و به‌صورت مؤثر گزینه‌های رأی‌گیری را بازنشانی می‌نماید.

خواندن نتایج رأی‌گیری

Aspose.Email همچنین امکان خواندن نتایج رأی‌گیری از گیرندگان پیام را می‌دهد. می‌توانید به ویژگی‌هایی مانند پاسخ گیرنده و زمان پاسخ دسترسی داشته باشید.

// Load a MapiMessage from a file
var msg = MapiMessage.Load("sample.msg");

// Iterate through each recipient and display their vote information
foreach (var recipient in msg.Recipients)
{
    Console.WriteLine($"Recipient: {recipient.DisplayName}");

    // Get the recipient's response using the appropriate MapiPropertyTag
    var response = recipient.Properties[MapiPropertyTag.PR_RECIPIENT_AUTORESPONSE_PROP_RESPONSE].GetString();
    Console.WriteLine($"Response: {response}");

    // Get the response time
    var responseTime = recipient.Properties[MapiPropertyTag.PR_RECIPIENT_TRACKSTATUS_TIME].GetDateTime();
    Console.WriteLine($"Response time: {responseTime}\n");
}
  • MapiRecipient: نمایندهٔ یک گیرنده در MapiMessage، که دسترسی به داده‌های پاسخ فردی را فراهم می‌کند.
  • *PR_RECIPIENT_AUTORESPONSE_PROP_RESPONSE: برچسب ویژگی که پاسخ رأی گیرنده را ذخیره می‌کند.
  • PR_RECIPIENT_TRACKSTATUS_TIME: برچسب ویژگی که زمان پاسخ گیرنده را ثبت می‌کند.

دریافت اطلاعات واکنش از MSG

این GetReactions متد از FollowUpManager کلاس به شما امکان می‌دهد فهرستی از واکنش‌ها بر روی یک پیام MAPI بازیابی کنید، که تحلیل تعامل کاربران را آسان می‌سازد. نمونه کد زیر نشان می‌دهد چگونه واکنش‌های موجود برای یک پیام مشخص را دریافت کنید و بینشی درباره تعاملات کاربر فراهم می‌آورد:

// Load the message file
var msg = MapiMessage.Load(fileName);

// Retrieve the list of reactions on the message
var reactions = FollowUpManager.GetReactions(msg);

// Iterate through each reaction and output the details to the console
foreach (var reaction in reactions)
{
    Console.WriteLine($"User: {reaction.Name}, Email: {reaction.Email}, Reaction: {reaction.Type}, Date: {reaction.ReactionDateTime}");
}