استخدام عميل SMTP لإرسال رسائل البريد الإلكتروني، إعادة توجيه الرسائل، وإجراء دمج البريد في C#
إرسال رسائل البريد الإلكتروني
إرسال رسائل بريد إلكتروني باستخدام فئة SmtpClient
الـ SmtpClient الفئة تُمكّن التطبيقات من إرسال بريد إلكتروني عبر بروتوكول نقل البريد البسيط (SMTP).
أحد ميزاته الرئيسية هو القدرة على إرسال رسائل بالجملة.
كما يدعم بالكامل متزامن و غير متزامن نماذج البرمجة. لنقل بريد إلكتروني يحجز الخيط الرئيسي حتى يكتمل العملية، يمكن للمطورين استخدام أحد الأنماط المتزامنة إرسال الطرق. بدلاً من ذلك، للسماح للخيط الرئيسي بالاستمرار في التنفيذ أثناء إرسال البريد، يمكن للمطورين استخدام SendAsync طريقة.
بالإضافة إلى ذلك، SmtpClient يدعم إرسال رسائل في صيغة التغليف المحايد للنقل (TNEF).
إرسال رسائل البريد إلكتروني بشكل متزامن
يمكن إرسال رسالة بريد إلكتروني بشكل متزامن باستخدام إرسال طريقة الـ SmtpClient الفئة. ترسل رسالة البريد المحددة عبر خادم SMTP للتسليم. لإرسال رسالة بريد إلكتروني بشكل متزامن، اتبع الخطوات الواردة أدناه:
- إنشاء نسخة من MailMessage الفئة وتعيين خصائصها.
- إنشاء نسخة من SmtpClient الفئة وتحديد المضيف، المنفذ، اسم المستخدم وكلمة المرور.
- إرسال الرسالة باستخدام الـ إرسال طريقة الـ SmtpClient الفئة وتمرير الـ MailMessage كائن.
يظهر مقطع الشيفرة التالي بلغة C# كيفية إرسال رسائل Outlook بشكل متزامن.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Declare msg as MailMessage instance
MailMessage msg = new MailMessage();
// Create an instance of SmtpClient class
SmtpClient client = new SmtpClient();
// Specify your mailing host server, Username, Password, Port # and Security option
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;
try
{
// Client.Send will send this message
client.Send(msg);
Console.WriteLine("Message sent");
}
catch (Exception ex)
{
Trace.WriteLine(ex.ToString());
}
إرسال رسائل البريد إلكتروني بشكل غير متزامن
أحيانًا، قد ترغب في إرسال البريد بشكل غير متزامن للسماح للبرنامج باستمرار تنفيذ عمليات أخرى بينما يتم إرسال البريد في الخلفية. بدءًا من .NET Framework 4.5، يمكنك استخدام الأساليب غير المتزامنة المُنفذة وفقًا لـ TAP النموذج. يوضح مقطع الشيفرة التالي بلغة C# كيفية إرسال رسائل Outlook باستخدام أساليب النمط غير المتزامن القائم على المهام:
-
SendAsync يرسل الرسائل المحددة.
-
IAsyncSmtpClient - يسمح للتطبيقات بإرسال الرسائل باستخدام بروتوكول نقل البريد البسيط (SMTP).
-
SmtpClient.CreateAsync - ينشئ نسخة جديدة من فئة Aspose.Email.Clients.Smtp.SmtpClient
-
SmtpSend - مجموعة معلمات طريقة Aspose.Email.Clients.Smtp.IAsyncSmtpClient.SendAsync(Aspose.Email.Clients.Smtp.Models.SmtpSend).
-
SmtpForward - معطيات Aspose.Email.Clients.Smtp.IAsyncSmtpClient.ForwardAsync(Aspose.Email.Clients.Smtp.Models.SmtpForward).
// Authenticate the client to obtain necessary permissions
static readonly string tenantId = "YOU_TENANT_ID";
static readonly string clientId = "YOU_CLIENT_ID";
static readonly string redirectUri = "http://localhost";
static readonly string username = "username";
static readonly string[] scopes = { "https://outlook.office.com/SMTP.Send" };
// Use the SmtpAsync method for asynchronous operations
static async Task Main(string[] args)
{
await SmtpAsync();
Console.ReadLine();
}
static async Task SmtpAsync()
{
// Create token provider and get access token
var tokenProvider = new TokenProvider(clientId, tenantId, redirectUri, scopes);
var client = SmtpClient.CreateAsync("outlook.office365.com", username, tokenProvider, 587).GetAwaiter().GetResult();
// Create a message to send
var eml = new MailMessage("from@domain.com", "to@domain.com", "test subj async", "test body async");
// send message
var sendOptions = SmtpSend.Create();
sendOptions.AddMessage(eml);
await client.SendAsync(sendOptions);
Console.WriteLine("message was sent");
// forward message
var fwdOptions = SmtpForward.Create();
fwdOptions.SetMessage(eml);
fwdOptions.AddRecipient("rec@domain.com");
await client.ForwardAsync(fwdOptions);
Console.WriteLine("message was forwarded");
}
// Token provider implementation
public class TokenProvider : IAsyncTokenProvider
{
private readonly PublicClientApplicationOptions _pcaOptions;
private readonly string[] _scopes;
public TokenProvider(string clientId, string tenantId, string redirectUri, string[] scopes)
{
_pcaOptions = new PublicClientApplicationOptions
{
ClientId = clientId,
TenantId = tenantId,
RedirectUri = redirectUri
};
_scopes = scopes;
}
public async Task<OAuthToken> GetAccessTokenAsync(bool ignoreExistingToken = false, CancellationToken cancellationToken = default)
{
var pca = PublicClientApplicationBuilder
.CreateWithApplicationOptions(_pcaOptions).Build();
try
{
var result = await pca.AcquireTokenInteractive(_scopes)
.WithUseEmbeddedWebView(false)
.ExecuteAsync(cancellationToken);
return new OAuthToken(result.AccessToken);
}
catch (MsalException ex)
{
Console.WriteLine($"Error acquiring access token: {ex}");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex}");
}
return null;
}
public void Dispose()
{
}
}
إرسال رسائل من القرص
تحتوي ملفات EML على رأس، جسم الرسالة، ومرفقات. يتيح Aspose.Email للمطورين العمل مع ملفات EML بطرق مختلفة. يوضح هذا القسم كيفية تحميل ملفات EML من القرص وإرساله كرسائل بريد إلكتروني باستخدام SMTP. يمكنك تحميل ملفات .eml من القرص أو التدفق إلى الـ MailMessage الفئة وأرسل رسالة البريد باستخدام الـ SmtpClient الفئة. الـ MailMessage الفئة هي الفئة الرئيسية لإنشاء رسائل بريد إلكتروني جديدة، تحميل ملفات رسائل البريد من القرص أو التدفق، وحفظ الرسائل. يوضح مقطع الشيفرة التالي بلغة C# كيفية إرسال الرسائل المخزنة من القرص.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Load an EML file in MailMessage class
var message = MailMessage.Load(dataDir + "test.eml");
// Send this message using SmtpClient
var client = new SmtpClient("host", "username", "password");
try
{
client.Send(message);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
إرسال رسائل بريد إلكتروني بنص عادي
الـ المحتوى خاصية، خاصية من الـ MailMessage الفئة، تُستخدم لتحديد محتوى النص العادي لجسم الرسالة. لإرسال رسالة بريد نصية عادية، اتبع الخطوات التالية:
- إنشاء مثيل من الـ MailMessage فئة.
- حدد عناوين البريد للمرسل والمستلم في الـ MailMessage كائن.
- حدد الـ المحتوى المحتوى، يُستخدم لرسالة النص العادي.
- إنشاء مثيل من الـ SmtpClient الفئة وأرسل البريد.
يوضح المقتطف البرمجي التالي كيفية إرسال بريد إلكتروني نص عادي.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
//Create an instance of the MailMessage class
var message = new MailMessage();
// Set From field, To field and Plain text body
message.From = "sender@sender.com";
message.To.Add("receiver@receiver.com");
message.Body = "This is Plain Text Body";
// Create an instance of the SmtpClient class
var client = new SmtpClient();
// And Specify your mailing host server, Username, Password and Port
client.Host = "smtp.server.com";
client.Username = "Username";
client.Password = "Password";
client.Port = 25;
try
{
//Client.Send will send this message
client.Send(message);
Console.WriteLine("Message sent");
}
catch (Exception ex)
{
System.Diagnostics.Trace.WriteLine(ex.ToString());
}
إرسال رسائل بريد إلكتروني بجسم HTML
تُظهر عينات البرمجة أدناه كيفية إرسال رسالة بريد إلكتروني HTML بسيطة. الـ HtmlBody، خاصية من الـ MailMessage الفئة، تُستخدم لتحديد محتوى HTML لجسم الرسالة. لإرسال بريد إلكتروني HTML بسيط، اتبع الخطوات التالية:
- إنشاء مثيل من الـ MailMessage فئة.
- حدد عناوين بريد المرسل والمستلم في الـ MailMessage كائن.
- حدد الـ HtmlBody المحتوى.
- إنشاء مثيل من الـ SmtpClient الفئة وأرسل البريد باستخدام الـ إرسال طريقة.
لغرض هذه المقالة، محتوى HTML للبريد هو بدائي:
This is the HTML body معظم رسائل HTML ستكون أكثر تعقيدًا. يوضح مقطع الشيفرة أدناه كيفية إرسال بريد إلكتروني بجسم HTML.// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
public static void Run()
{
// Declare msg as MailMessage instance
var msg = new MailMessage();
// Use MailMessage properties like specify sender, recipient, message and HtmlBody
msg.From = "newcustomeronnet@gmail.com";
msg.To = "asposetest123@gmail.com";
msg.Subject = "Test subject";
msg.HtmlBody = "<html><body>This is the HTML body</body></html>";
var client = GetSmtpClient();
try
{
// Client will send this message
client.Send(msg);
Console.WriteLine("Message sent");
}
catch (Exception ex)
{
Trace.WriteLine(ex.ToString());
}
Console.WriteLine(Environment.NewLine + "Email sent with HTML body.");
}
private static SmtpClient GetSmtpClient()
{
var client = new SmtpClient("smtp.gmail.com", 587, "your.email@gmail.com", "your.password");
client.SecurityOptions = SecurityOptions.Auto;
return client;
}
إرسال رسائل بريد إلكتروني بصيغة HTML مع نص بديل
استخدم الـ AlternateView الفئة لتحديد نسخ من رسالة البريد الإلكتروني بصيغ مختلفة. على سبيل المثال، إذا أرسلت رسالة بصيغة HTML، قد ترغب أيضًا في توفير نسخة نصية عادية للمستلمين الذين يستخدمون قراء بريد لا يمكنهم عرض محتوى HTML. أو إذا كنت تُرسل نشرة إخبارية، قد ترغب في توفير نسخة نصية عادية للنص لأولئك الذين اختاروا استلام نسخة نصية عادية. لإرسال بريد إلكتروني بنص بديل، اتبع الخطوات التالية:
- إنشاء مثيل من الـ MailMessage فئة.
- حدد عناوين البريد الإلكتروني للمرسل والمستلم في الـ MailMessage كائن.
- إنشاء مثيل من الـ AlternateView فئة.
هذا يُنشئ عرضًا بديلًا لرسالة البريد الإلكتروني باستخدام المحتوى المحدد في السلسلة.
- أضف نسخة من الـ AlternateView الفئة إلى الـ MailMessage الكائن.
- إنشاء مثيل من الـ SmtpClient الفئة وأرسل البريد باستخدام الـ إرسال طريقة.
يوضح المقتطف البرمجي التالي كيفية إرسال بريد إلكتروني بنص بديل.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Declare message as MailMessage instance
var message = new MailMessage();
// Creates AlternateView to view an email message using the content specified in the //string
var alternate = AlternateView.CreateAlternateViewFromString("Alternate Text");
// Adding alternate text
message.AlternateViews.Add(alternate);
إرسال رسائل بريد جماعية
يمكننا إرسال مجموعة من رسائل البريد باستخدام الـ SmtpClient فئة الـ إرسال إفراط في الطريقة (overload) الذي يقبل MailMessageCollection:
- إنشاء نسخة من SmtpClient فئة.
- حدد الـ SmtpClient خصائص الفئة.
- إنشاء مثيل من الـ MailMessage فئة.
- حدد المرسل، المستلم، موضوع البريد والرسالة في نسخة الـ MailMessage فئة.
- كرر الخطوتين السابقتين مرة أخرى إذا أردت إرسال بريد إلكتروني إلى شخص آخر.
- إنشاء نسخة من MailMessageCollection فئة.
- أضف نسخة من MailMessage الفئة داخل كائن الـ MailMessageCollection فئة.
- الآن أرسل بريدك باستخدام الـ SmtpClient فئة إرسال طريقة بتمرير نسخة من MailMessageCollection الفئة فيه.
يوضح المقتطف البرمجي التالي كيفية إرسال رسائل بريد إلكتروني بالجملة.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Create SmtpClient as client and specify server, port, user name and password
var client = new SmtpClient("mail.server.com", 25, "Username", "Password");
// Create instances of MailMessage class and Specify To, From, Subject and Message
var message1 = new MailMessage("msg1@from.com", "msg1@to.com", "Subject1", "message1, how are you?");
var message2 = new MailMessage("msg1@from.com", "msg2@to.com", "Subject2", "message2, how are you?");
var message3 = new MailMessage("msg1@from.com", "msg3@to.com", "Subject3", "message3, how are you?");
// Create an instance of MailMessageCollection class
var manyMsg = new MailMessageCollection();
manyMsg.Add(message1);
manyMsg.Add(message2);
manyMsg.Add(message3);
try
{
// Send Messages using Send method
client.Send(manyMsg);
Console.WriteLine("Message sent");
}
catch (Exception ex)
{
Trace.WriteLine(ex.ToString());
}
تتبع نجاح رسائل البريد الجماعية
عند إرسال رسائل بكميات كبيرة، يمكنك الحصول على معلومات حول عدد الرسائل المرسلة بنجاح وحتى الحصول على قائمة بهذه الرسائل. الـ SucceededSending الحدث مخصص لهذا الغرض.
عينة الشيفرة:
using (var client = new SmtpClient(host, SecurityOptions.Auto))
{
int messageCount = 0;
client.SucceededSending += (sender, eventArgs) =>
{
Console.WriteLine("The message '{0}' was successfully sent.", eventArgs.Message.Subject);
messageCount++;
};
client.Send(messages);
Console.WriteLine("{0} messages were successfully sent.", messageCount);
}
إرسال رسائل البريد الإلكتروني باستخدام MultiConnection
الـ UseMultiConnection يمكن استخدام الخاصية لإنشاء اتصالات متعددة للعمليات الثقيلة. يمكنك أيضًا ضبط عدد الاتصالات التي سيتم استخدامها أثناء وضع الاتصال المتعدد باستخدام SmtpClient.ConnectionsQuantity. يوضح المقتطف البرمجي التالي استخدام وضع متعدد الاتصالات لإرسال رسائل متعددة.
var smtpClient = new SmtpClient();
smtpClient.Host = "<HOST>";
smtpClient.Username = "<USERNAME>";
smtpClient.Password = "<PASSWORD>";
smtpClient.Port = 587;
smtpClient.SupportedEncryption = EncryptionProtocols.Tls;
smtpClient.SecurityOptions = SecurityOptions.SSLExplicit;
var messages = new List<MailMessage>();
for (int i = 0; i < 20; i++)
{
MailMessage message = new MailMessage(
"<EMAIL ADDRESS>",
"<EMAIL ADDRESS>",
"Test Message - " + Guid.NewGuid().ToString(),
"SMTP Send Messages with MultiConnection");
messages.Add(message);
}
smtpClient.ConnectionsQuantity = 5;
smtpClient.UseMultiConnection = MultiConnectionMode.Enable;
smtpClient.Send(messages);
إرسال رسائل بصيغة TNEF
تحتوي رسائل TNEF على تنسيق خاص قد يُفقد إذا أُرسلت باستخدام واجهة برمجة التطبيقات القياسية. الـ SmtpClient فئة UseTnef يمكن ضبط الخاصية لإرسال البريد الإلكتروني كـ TNEF. يوضح المقتطف البرمجي التالي كيفية إرسال رسالة كـ TNEF.
var emlFileName = RunExamples.GetDataDir_Email() + "Message.eml"; // A TNEF Email
// Load from eml
var eml1 = MailMessage.Load(emlFileName, new EmlLoadOptions());
eml1.From = "somename@gmail.com";
eml1.To.Clear();
eml1.To.Add(new MailAddress("first.last@test.com"));
eml1.Subject = "With PreserveTnef flag during loading";
eml1.Date = DateTime.Now;
var client = new SmtpClient("smtp.gmail.com", 587, "somename", "password");
client.SecurityOptions = SecurityOptions.Auto;
client.UseTnef = true; // Use this flag to send as TNEF
client.Send(eml1);
إرسال طلبات اجتماع
يتيح Aspose.Email للمطورين إضافة وظائف التقويم إلى رسائلك الإلكترونية.
إرسال طلبات عبر البريد الإلكتروني
لإرسال طلبات اجتماع عبر البريد الإلكتروني، اتبع الخطوات التالية:
- إنشاء مثيل من الـ MailMessage فئة.
- حدد عناوين المرسل والمستلم باستخدام مثيل من الـ MailMessage فئة.
- تهيئ مثيل من الـ Appointment الفئة وتمرير قيمها.
- حدد الملخص والوصف في الـ Calendar كائن.
- أضف الـ Calendar إلى الـ MailMessage مثيل وتمريره إلى الـ Appointment كائن.
|طلب اجتماع iCalendar يُرسل عبر البريد الإلكتروني| | :- | |
| يوضح المقتطف البرمجي التالي كيفية إرسال الطلبات عبر البريد الإلكتروني.
// Create an instance of the MailMessage class
var msg = new MailMessage();
// Set the sender, recipient, who will receive the meeting request. Basically, the recipient is the same as the meeting attendees
msg.From = "newcustomeronnet@gmail.com";
msg.To = "person1@domain.com, person2@domain.com, person3@domain.com, asposetest123@gmail.com";
// Create Appointment instance
var app = new Appointment("Room 112", new DateTime(2015, 7, 17, 13, 0, 0), new DateTime(2015, 7, 17, 14, 0, 0), msg.From, msg.To);
app.Summary = "Release Meetting";
app.Description = "Discuss for the next release";
// Add appointment to the message and Create an instance of SmtpClient class
msg.AddAlternateView(app.RequestApointment());
var client = GetSmtpClient();
try
{
// Client.Send will send this message
client.Send(msg);
Console.WriteLine("Message sent");
}
catch (Exception ex)
{
Trace.WriteLine(ex.ToString());
}
إعادة توجيه الرسائل
إعادة توجيه الرسائل باستخدام عميل SMTP
إعادة توجيه بريد إلكتروني هي ممارسة شائعة. يمكن إعادة توجيه بريد مستلم إلى مستلمين محددين. الـ إعادة توجيه يمكن استخدام الطريقة لإعادة توجيه بريد إلكتروني مستلم أو محفوظ إلى المستلمين المطلوبين. يوضح مقطع الشيفرة التالي كيفية إعادة توجيه بريد باستخدام عميل SMTP.
//Create an instance of SmtpClient class
var client = new SmtpClient();
// Specify your mailing host server, Username, Password, Port and SecurityOptions
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;
var message = MailMessage.Load(dataDir + "Message.eml");
client.Forward("Recipient1@domain.com", "Recipient2@domain.com", message);
إعادة توجيه الرسائل بدون MailMessage
تدعم الواجهة البرمجية أيضًا إعادة توجيه رسائل EML دون تحميلها أولاً إلى MailMessage. هذا مفيد في الحالات التي تكون فيها موارد النظام محدودة من حيث الذاكرة.
using (var client = new SmtpClient(host, smtpPort, username, password, SecurityOptions.Auto))
{
using (var fs = File.OpenRead(@"test.eml"))
{
client.Forward(sender, recipients, fs);
}
}
إعادة توجيه الرسائل بشكل غير متزامن بدون MailMessage
using (var client = new SmtpClient(host, smtpPort, username, password))
{
using (var fs = File.OpenRead(@"test.eml"))
{
await client.ForwardAsync(sender, recipients, fs);
}
}
دمج البريد
كيفية دمج رسائل البريد الإلكتروني
يساعد دمج البريد في إنشاء وإرسال دفعة من رسائل البريد الإلكترونية المتشابهة. جوهر الرسائل هو نفسه، لكن المحتوى يمكن تخصيصه. عادةً ما تُستخدم تفاصيل اتصال المستلم (الاسم الأول، الاسم الثاني، الشركة، إلخ) لتخصيص البريد.
|توضيح كيفية عمل دمج البريد:| | :- | |
| Aspose.Email يتيح للمطورين إعداد دمج بريد يتضمن بيانات من مجموعة متنوعة من مصادر البيانات.
لتنفيذ دمج بريد مع Aspose.Email، اتبع الخطوات التالية:
- إنشاء دالة بتوقيع الاسم
- إنشاء مثيل من الـ MailMessage فئة.
- حدد المرسل، المستلم، الموضوع، والنص.
- أنشئ توقيعًا لنهاية البريد الإلكتروني.
- إنشاء مثيل من الـ TemplateEngine الفئة ومرّر لها الـ MailMessage كائن.
- احصل على التوقيع في الـ TemplateEngine كائن.
- أنشئ نسخة من فئة DataTable.
- أضف الأعمدة Receipt و FirstName و LastName كمصادر بيانات في فئة DataTable.
- أنشئ نسخة من فئة DataRow.
- حدد عنوان المستلم، والاسم الأول والاسم الأخير في كائن DataRow.
- إنشاء مثيل من الـ MailMessageCollection فئة
- حدد الـ TemplateEngine وأنسجة DataTable في الـ MailMessageCollection كائن.
- إنشاء مثيل من الـ SmtpClient الفئة وتحديد الخادم، المنفذ، اسم المستخدم، وكلمة المرور.
- أرسل رسائل بريد إلكتروني باستخدام الـ SmtpClient فئة إرسال طريقة.
في المثال أدناه، يرمز #FirstName# إلى عمود DataTable، يتم تعيين قيمته من قبل المستخدم. يوضح مقطع الشيفرة التالي كيفية إجراء دمج البريد.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
public static void Run()
{
// The path to the File directory.
string dataDir = RunExamples.GetDataDir_SMTP();
string dstEmail = dataDir + "EmbeddedImage.msg";
// Create a new MailMessage instance
MailMessage msg = new MailMessage();
// Add subject and from address
msg.Subject = "Hello, #FirstName#";
msg.From = "sender@sender.com";
// Add email address to send email also Add mesage field to HTML body
msg.To.Add("your.email@gmail.com");
msg.HtmlBody = "Your message here";
msg.HtmlBody += "Thank you for your interest in <STRONG>Aspose.Email</STRONG>.";
// Use GetSignment as the template routine, which will provide the same signature
msg.HtmlBody += "<br><br>Have fun with it.<br><br>#GetSignature()#";
// Create a new TemplateEngine with the MSG message, Register GetSignature routine. It will be used in MSG.
TemplateEngine engine = new TemplateEngine(msg);
engine.RegisterRoutine("GetSignature", GetSignature);
// Create an instance of DataTable and Fill a DataTable as data source
DataTable dt = new DataTable();
dt.Columns.Add("Receipt", typeof(string));
dt.Columns.Add("FirstName", typeof(string));
dt.Columns.Add("LastName", typeof(string));
DataRow dr = dt.NewRow();
dr["Receipt"] = "abc<asposetest123@gmail.com>";
dr["FirstName"] = "a";
dr["LastName"] = "bc";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Receipt"] = "John<email.2@gmail.com>";
dr["FirstName"] = "John";
dr["LastName"] = "Doe";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Receipt"] = "Third Recipient<email.3@gmail.com>";
dr["FirstName"] = "Third";
dr["LastName"] = "Recipient";
dt.Rows.Add(dr);
MailMessageCollection messages;
try
{
// Create messages from the message and datasource.
messages = engine.Instantiate(dt);
// Create an instance of SmtpClient and specify server, port, username and password
SmtpClient client = new SmtpClient("smtp.gmail.com", 587, "your.email@gmail.com", "your.password");
client.SecurityOptions = SecurityOptions.Auto;
// Send messages in bulk
client.Send(messages);
}
catch (MailException ex)
{
Debug.WriteLine(ex.ToString());
}
catch (SmtpException ex)
{
Debug.WriteLine(ex.ToString());
}
Console.WriteLine(Environment.NewLine + "Message sent after performing mail merge.");
}
// Template routine to provide signature
static object GetSignature(object[] args)
{
return "Aspose.Email Team<br>Aspose Ltd.<br>" + DateTime.Now.ToShortDateString();
}
كيفية إجراء دمج بريد على مستوى الصفوف
يمكن للمستخدم دمج صف بيانات فردي وكذلك الحصول على مجموعة كاملة ومُعدة MailMessage الكائن. الـ TemplateEngine.Merge يمكن استخدام الطريقة لإجراء دمج بريد على مستوى الصفوف.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Create message from the data in current row.
message = engine.Merge(currentRow);