إرسال وإعادة توجيه الرسائل - إرسال رسائل Outlook باستخدام برنامج Java
الـ SmtpClient الفئة تتيح للتطبيقات إرسال بريد إلكتروني باستخدام بروتوكول نقل البريد البسيط (SMTP).
- الـ SmtpClient الفئة هي المدخل الرئيسي الوحيد الذي يستخدمه المطورون لإرسال رسائل البريد.
- الـ SmtpClient الفئة توفر أيضًا طرق توصيل بريد إلكتروني شائعة أخرى، بما في ذلك كتابة رسائل البريد إلى نظام الملفات، طابور الرسائل، إلخ.
- الـ SmtpClient الفئة تدعم تمامًا هذين النموذجين البرمجيين:
- الـ SmtpClient الفئة تدعم أيضًا إرسال الرسائل كـ TNEF
لإرسال رسالة البريد الإلكتروني وحجب التنفيذ أثناء انتظار نقل البريد إلى خادم SMTP، استخدم إحدى طرق الإرسال المتزامنة. للسماح للخيط الرئيسي للبرنامج بالاستمرار في التنفيذ أثناء نقل البريد، استخدم الـ beginSend طريقة.
إرسال البريد الإلكتروني بشكل متزامن
يمكن إرسال رسالة بريد إلكتروني بشكل متزامن باستخدام SmtpClient فئة إرسال الطريقة. ترسل رسالة البريد الإلكتروني المحددة عبر خادم SMTP للتسليم. يتم تحديد مرسل الرسالة، المستلمين، الموضوع، ومحتوى الرسالة باستخدام كائنات String. لإرسال رسالة بريد إلكتروني بشكل متزامن، اتبع الخطوات الواردة أدناه:
- إنشاء نسخة من MailMessage الفئة وتعيين خصائصها.
- إنشاء نسخة من SmtpClient الفئة وتحديد المضيف، المنفذ، اسم المستخدم وكلمة المرور.
- إرسال الرسالة باستخدام الـ SmtpClient فئة إرسال الطريقة وتمرير الـ MailMessage كائن.
المقتطف البرمجي التالي بلغة Java يوضح لك كيفية إرسال رسائل Outlook بشكل متزامن.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// 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.setHost("mail.server.com");
client.setUsername("username");
client.setPassword("password");
client.setPort(587);
client.setSecurityOptions(SecurityOptions.SSLExplicit);
try {
// Client.Send will send this message
client.send(msg);
System.out.println("Message sent");
} catch (Exception ex) {
System.err.println(ex);
}
إرسال البريد الإلكتروني بشكل غير متزامن
أحيانًا قد ترغب في إرسال البريد بشكل غير متزامن. على سبيل المثال، إذا كنت ترسل الكثير من الرسائل عبر تطبيقك، قد لا تعمل الطريقة المتزامنة. في مثل هذا السيناريو، يمكنك استخدام beginSend. الـ beginSend طريقة الـ SmtpClient الفئة ترسل رسالة بريد إلكتروني إلى خادم SMTP للتسليم. هذه الطريقة لا تحجب الخيط (thread) المستدعي وتسمح للمستدعي بتمرير كائن إلى الطريقة يتم استدعاؤه عند إكمال العملية. لإرسال رسالة بريد Outlook بشكل غير متزامن في Java، اتبع الخطوات التالية:
- إنشاء نسخة من MailMessage الفئة واستخدام خصائصها المختلفة.
- إنشاء نسخة من SmtpClient الفئة وتحديد المضيف، المنفذ، اسم المستخدم، وكلمة المرور.
- إنشاء مثيل معرف من قبل المستخدم ليتم تمريره إلى الطريقة واستدعاؤه عندما تكتمل العملية غير المتزامنة.
- إرسال الرسالة باستخدام beginSend طريقة من SmtpClient الفئة وتمرير الـ MailMessage كائن مثيل ومثيل معرف من قبل المستخدم فيه بالإضافة إلى دالة استدعاء تُستدعى عند إكمال العملية.
لتلقي إشعار عندما يتم إرسال البريد الإلكتروني أو تم إلغاء العملية، يتم تمرير دالة الاستدعاء إلى beginSend يتم استدعاء الطريقة. بعد استدعاء SmtpClient فئة beginSend الطريقة لا تحتاج إلى الانتظار حتى يتم إرسال رسالة البريد الإلكتروني بالكامل. يمكننا استدعاء طريقة أخرى beginSend في نفس الوقت. عندما يتم إرسال بريد إلكتروني باستخدام الـ beginSend الطريقة، يطبع المقتطف البرمجي رسالة ("Message Sent"). يوضح برنامج Java التالي أو المقتطف البرمجي كيفية إرسال رسائل البريد إلكتروني بشكل غير متزامن.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
public static void run() {
sendMail();
}
static SmtpClient getSmtpClient() {
SmtpClient client = new SmtpClient();
client.setHost("mail.server.com");
// Specify your mail Username, Password, Port # and security option
client.setUsername("username");
client.setPassword("password");
client.setPort(587);
client.setSecurityOptions(SecurityOptions.SSLExplicit);
return client;
}
static void sendMail() {
try {
// Declare msg as MailMessage instance
MailMessage msg = new MailMessage("sender@gmail.com", "receiver@gmail.com", "Test subject", "Test body");
SmtpClient client = getSmtpClient();
Object state = new Object();
IAsyncResult ar = client.beginSend(msg, callback, state);
// If the user canceled the send, and mail hasn't been sent yet,
client.cancelAsyncOperation(ar);
msg.dispose();
System.out.println("Goodbye.");
} catch (Exception ex) {
System.err.println(ex);
}
}
static AsyncCallback callback = new AsyncCallback() {
public void invoke(IAsyncResult ar) {
IAsyncResultExt task = null;
if (ar instanceof IAsyncResult)
task = (IAsyncResultExt) ar;
if (task != null && task.isCanceled()) {
System.out.println("Send canceled.");
}
if (task != null && task.getErrorInfo() != null) {
System.out.println(task.getErrorInfo());
} else {
System.out.println("Message Sent.");
}
}
};
إرسال الرسائل المخزنة من القرص
ملفات EML، (ملفات البريد الإلكتروني لـ Outlook Express) تحتوي على رأس البريد، جسم الرسالة، وأي مرفقات. يتيح Aspose.Email للمطورين العمل مع ملفات EML بطرق مختلفة. تُظهر هذه المقالة كيفية تحميل ملفات EML من القرص وإرسالها كرسائل بريدية عبر SMTP. يمكنك تحميل ملفات .eml من القرص أو التدفق إلى الـ MailMessage الفئة وأرسل رسالة البريد باستخدام الـ SmtpClient الفئة. الـ MailMessage الفئة هي الفئة الرئيسية لإنشاء رسائل بريد إلكتروني جديدة، تحميل ملفات رسائل البريد من القرص أو التدفق وحفظ الرسائل. يوضح مقطع كود Java التالي كيفية إرسال الرسائل المخزنة من القرص.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Load an EML file in MailMessage class
MailMessage message = MailMessage.load(dataDir + "test.eml");
// Send this message using SmtpClient
SmtpClient client = new SmtpClient("host", "username", "password");
try {
client.send(message);
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
إرسال بريد نصي
تُظهر عينات البرمجة أدناه كيفية إرسال رسالة بريد نصية عادية. الـ المحتوى خاصية، خاصية من الـ MailMessage الفئة، تُستخدم لتحديد محتوى النص العادي لجسم الرسالة. لإرسال رسالة بريد نصية عادية، اتبع الخطوات التالية:
- إنشاء مثيل من الـ MailMessage فئة.
- حدد عناوين البريد للمرسل والمستلم في الـ MailMessage كائن.
- حدد الـ المحتوى المحتوى، يُستخدم لرسالة النص العادي.
- إنشاء مثيل من الـ SmtpClient الفئة وأرسل البريد.
يوضح المقتطف البرمجي التالي كيفية إرسال بريد إلكتروني نص عادي.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the MailMessage class
MailMessage message = new MailMessage();
// Set From field, To field and Plain text body
message.setFrom(MailAddress.to_MailAddress("sender@sender.com"));
message.getTo().add("receiver@receiver.com");
message.setBody("This is Plain Text Body");
// Create an instance of the SmtpClient class
SmtpClient client = new SmtpClient();
// And Specify your mailing host server, Username, Password and Port
client.setHost("smtp.server.com");
client.setUsername("Username");
client.setPassword("Password");
client.setPort(25);
try {
// Client.Send will send this message
client.send(message);
System.out.println("Message sent");
} catch (Exception ex) {
System.err.println(ex);
}
إرسال بريد إلكتروني بجسم HTML
تُظهر عينات البرمجة أدناه كيفية إرسال رسالة بريد إلكتروني HTML بسيطة. الـ HtmlBody، خاصية من الـ MailMessage الفئة، تُستخدم لتحديد محتوى HTML لجسم الرسالة. لإرسال بريد إلكتروني HTML بسيط، اتبع الخطوات التالية:
- إنشاء مثيل من الـ MailMessage فئة.
- حدد عناوين بريد المرسل والمستلم في الـ MailMessage كائن.
- حدد الـ HtmlBody المحتوى.
- إنشاء مثيل من الـ SmtpClient الفئة وأرسل البريد باستخدام الـ إرسال طريقة.
لأغراض هذه المقالة، محتوى HTML للبريد بسيط:
This is the HTML body معظم رسائل HTML ستكون أكثر تعقيدًا. يوضح المقتطف البرمجي لبرنامج Java التالي كيفية إرسال بريد إلكتروني بجسم HTML.public static void run() {
// Declare msg as MailMessage instance
MailMessage msg = new MailMessage();
// Use MailMessage properties like specify sender, recipient, message and HtmlBody
msg.setFrom(MailAddress.to_MailAddress("newcustomeronnet@gmail.com"));
msg.setTo(MailAddressCollection.to_MailAddressCollection("asposetest123@gmail.com"));
msg.setSubject("Test subject");
msg.setHtmlBody("<html><body>This is the HTML body</body></html>");
SmtpClient client = getSmtpClient();
try {
// Client will send this message
client.send(msg);
System.out.println("Message sent");
} catch (Exception ex) {
System.err.println(ex);
}
System.out.println("Email sent with HTML body.");
}
private static SmtpClient getSmtpClient() {
SmtpClient client = new SmtpClient("smtp.gmail.com", 587, "your.email@gmail.com", "your.password");
client.setSecurityOptions(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-Java
// Declare message as MailMessage instance
MailMessage message = new MailMessage();
// Creates AlternateView to view an email message using the content specified in the //String
AlternateView alternate = AlternateView.createAlternateViewFromString("Alternate Text");
// Adding alternate text
message.getAlternateViews().addItem(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-Java
// Create SmtpClient as client and specify server, port, user name and password
SmtpClient client = new SmtpClient("mail.server.com", 25, "Username", "Password");
// Create instances of MailMessage class and Specify To, From, Subject and Message
MailMessage message1 = new MailMessage("msg1@from.com", "msg1@to.com", "Subject1", "message1, how are you?");
MailMessage message2 = new MailMessage("msg1@from.com", "msg2@to.com", "Subject2", "message2, how are you?");
MailMessage message3 = new MailMessage("msg1@from.com", "msg3@to.com", "Subject3", "message3, how are you?");
// Create an instance of MailMessageCollection class
MailMessageCollection manyMsg = new MailMessageCollection();
manyMsg.addItem(message1);
manyMsg.addItem(message2);
manyMsg.addItem(message3);
// Use client.BulkSend function to complete the bulk send task
try {
// Send Message using BulkSend method
client.send(manyMsg);
System.out.println("Message sent");
} catch (Exception ex) {
System.err.println(ex);
}
الحصول على معلومات حول الرسائل المرسلة بالجملة
عند إرسال رسائل بالجملة، يمكنك الحصول على معلومات حول عدد الرسائل المرسلة بنجاح وقائمة بهذه الرسائل. الـ SucceededSending يُستخدم الحدث لهذا الغرض.
يوضح مثال الكود أدناه كيفية الحصول على معلومات حول عدد الرسائل المرسلة بنجاح:
try (SmtpClient client = new SmtpClient(host, SecurityOptions.Auto)) {
final AtomicInteger messageCount = new AtomicInteger(0);
client.setSucceededSending(new EventHandler<MailMessageEventArgs>() {
public void invoke(Object sender, MailMessageEventArgs eventArgs) {
System.out.println("The message " + eventArgs.getMessage().getSubject() + " was successfully sent.");
messageCount.incrementAndGet();
}
});
client.send(messages);
System.out.println(messageCount + " messages were successfully sent.");
}
إرسال رسائل البريد الإلكتروني باستخدام MultiConnection
SmtpClient يوفر UseMultiConnection خاصية يمكن استخدامها لإنشاء اتصالات متعددة للعمليات الثقيلة. يمكنك أيضًا تحديد عدد الاتصالات التي ستُستخدم أثناء وضع متعدد الاتصالات باستخدام SmtpClient.ConnectionsQuantity. يوضح المقتطف البرمجي التالي استخدام وضع متعدد الاتصالات لإرسال رسائل متعددة.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
SmtpClient smtpClient = new SmtpClient();
smtpClient.setHost("<HOST>");
smtpClient.setUsername("<USERNAME>");
smtpClient.setPassword("<PASSWORD>");
smtpClient.setPort(587);
smtpClient.setSupportedEncryption(EncryptionProtocols.Tls);
smtpClient.setSecurityOptions(SecurityOptions.SSLExplicit);
List<MailMessage> messages = new ArrayList<MailMessage>();
for (int i = 0; i < 20; i++) {
MailMessage message = new MailMessage("<EMAIL ADDRESS>", "<EMAIL ADDRESS>", "Test Message - " + UUID.randomUUID().toString(),
"SMTP Send Messages with MultiConnection");
messages.add(message);
}
smtpClient.setConnectionsQuantity(5);
smtpClient.setUseMultiConnection(MultiConnectionMode.Enable);
smtpClient.send(messages);
إرسال رسالة كـ TNEF
رسائل TNEF لديها تنسيق خاص قد يضيع إذا تم إرسالها باستخدام الواجهة البرمجية القياسية. يوفر Aspose.Email القدرة على إرسال رسائل كـ TNEF، وبالتالي الحفاظ على التنسيق. الـ SmtpClient فئة UseTnef يمكن ضبط الخاصية لإرسال البريد الإلكتروني كـ TNEF. يوضح المقتطف البرمجي التالي كيفية إرسال رسالة كـ TNEF.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
String emlFileName = dataDir + "Message.eml"; // A TNEF Email
// Load from eml
MailMessage eml1 = MailMessage.load(emlFileName, new EmlLoadOptions());
eml1.setFrom(MailAddress.to_MailAddress("somename@gmail.com"));
eml1.getTo().clear();
eml1.getTo().addItem(new MailAddress("first.last@test.com"));
eml1.setSubject("With PreserveTnef flag during loading");
eml1.setDate(new Date());
SmtpClient client = new SmtpClient("smtp.gmail.com", 587, "somename", "password");
client.setSecurityOptions(SecurityOptions.Auto);
client.setUseTnef(true); // Use this flag to send as TNEF
client.send(eml1);
إرسال طلبات الاجتماعات
يقدم Microsoft Outlook وظائف التقويم بالإضافة إلى إدارة البريد الإلكتروني. عندما يفتح المستخدم بريدًا يحتوي على دعوة لحدث، يطلب منه Outlook قبول الدعوة أو رفضها. يتيح Aspose.Email للمطورين إضافة وظائف التقويم إلى رسائلك.
إرسال الطلبات عبر البريد الإلكتروني
لإرسال طلبات اجتماع عبر البريد الإلكتروني، اتبع الخطوات التالية:
- إنشاء مثيل من الـ MailMessage فئة.
- حدد عناوين المرسل والمستلم باستخدام مثيل من الـ MailMessage فئة.
- تهيئ مثيل من الـ Appointment الفئة وتمرير قيمها.
- حدد الملخص والوصف في الـ Calendar كائن.
- أضف الـ Calendar) إلى الـ MailMessage مثيل وتمريره إلى الـ Appointment كائن.
|طلب اجتماع iCalendar يُرسل عبر البريد الإلكتروني| | :- | |
| يوضح المقتطف البرمجي التالي كيفية إرسال الطلبات عبر البريد الإلكتروني.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the MailMessage class
MailMessage msg = new MailMessage();
// Set the sender, recipient, who will receive the meeting request. Basically, the recipient is the same as the meeting attendees
msg.setFrom(MailAddress.to_MailAddress("newcustomeronnet@gmail.com"));
msg.setTo(MailAddressCollection.to_MailAddressCollection("person1@domain.com, person2@domain.com, person3@domain.com, asposetest123@gmail.com"));
// Create Appointment instance
Calendar cal = Calendar.getInstance();
cal.set(2015, Calendar.JULY, 17, 13, 0, 0);
Date startDate = cal.getTime();
cal.set(2015, Calendar.JULY, 17, 14, 0, 0);
Date endDate = cal.getTime();
Appointment app = new Appointment("Room 112", startDate, endDate, msg.getFrom(), msg.getTo());
app.setSummary("Release Meetting");
app.setDescription("Discuss for the next release");
// Add appointment to the message and Create an instance of SmtpClient class
msg.addAlternateView(app.requestApointment());
SmtpClient client = getSmtpClient();
try {
// Client.Send will send this message
client.send(msg);
System.out.println("Message sent");
} catch (Exception ex) {
System.err.println(ex);
}
دعم iCalendar لـ IBM Lotus Notes
ميزة التقويم في Aspose.Email تعتمد على معيار iCalendar، وهو معيار لتبادل بيانات التقويم (RFC 2445 أو مرجع صياغة RFC2445). لذلك، يدعم ليس فقط Microsoft Outlook بل أيضًا IBM Lotus Notes. لإرسال طلب اجتماع في Lotus Notes، اتبع نفس الخطوات المذكورة أعلاه.
إعادة توجيه بريد إلكتروني باستخدام عميل SMTP
إعادة توجيه البريد الإلكتروني باستخدام عميل SMTP
إعادة توجيه البريد الإلكتروني هي ممارسة شائعة في التواصل الرقمي اليومي. يمكن إعادة توجيه بريد مستلم إلى مستلمين محددين دون مشاركة مع المرسلين الأصليين. واجهة Aspose.Email SmtpClient توفر القدرة على إعادة توجيه بريد إلكتروني إلى مستلمين محددين. الـ إعادة توجيه يمكن استخدام الطريقة لإعادة توجيه بريد إلكتروني مستلم أو محفوظ إلى المستلمين المطلوبين كما هو موضح في هذا المقال. يوضح المقتطف البرمجي التالي كيفية إعادة توجيه بريد إلكتروني باستخدام عميل SMTP.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of SmtpClient class
SmtpClient client = new SmtpClient();
// Specify your mailing host server, Username, Password, Port and SecurityOptions
client.setHost("mail.server.com");
client.setUsername("username");
client.setPassword("password");
client.setPort(587);
client.setSecurityOptions(SecurityOptions.SSLExplicit);
MailMessage message = MailMessage.load(dataDir + "Message.eml");
client.forward("Recipient1@domain.com", "Recipient2@domain.com", message);
إعادة توجيه البريد الإلكتروني دون استخدام MailMessage
تدعم الواجهة البرمجية أيضًا إعادة توجيه رسائل EML دون تحميلها أولاً إلى MailMessage. هذا مفيد في الحالات التي تكون فيها موارد النظام محدودة من حيث الذاكرة.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
String host = "mail.server.com";
String username = "username";
String password = "password";
int smtpPort = 587;
String sender = "Sender@domain.com";
MailAddressCollection recipients = new MailAddressCollection();
recipients.add("recepient1@domain.com, recepient2@domain.com");
try (SmtpClient client = new SmtpClient(host, smtpPort, username, password, SecurityOptions.Auto)) {
String fileName = "test.eml";
try (FileInputStream fs = new FileInputStream(new File(dataDir + fileName))) {
client.forward(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-Java
public static void run() {
// The path to the File directory.
String dstEmail = dataDir + "EmbeddedImage.msg";
// Create a new MailMessage instance
MailMessage msg = new MailMessage();
// Add subject and from address
msg.setSubject("Hello, #FirstName#");
msg.setFrom(MailAddress.to_MailAddress("sender@sender.com"));
// Add email address to send email also Add mesage field to HTML body
msg.getTo().add("your.email@gmail.com");
String htmlBody = "Your message here/r/n" + "Thank you for your interest in <STRONG>Aspose.Email</STRONG>.";
// Use GetSignment as the template routine, which will provide the same signature
htmlBody += "<br><br>Have fun with it.<br><br>#GetSignature()#";
msg.setHtmlBody(htmlBody);
// 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", new TemplateRoutine() {
public Object invoke(Object[] args) {
return getSignature(args);
}
});
// Create an instance of DataTable and Fill a DataTable as data source
DataTable dt = new DataTable();
dt.getColumns().add("Receipt");
dt.getColumns().add("FirstName");
dt.getColumns().add("LastName");
DataRow dr;
dr = dt.newRow();
dr.set("Receipt", "Nancy<Nancy@somedomain.com>");
dr.set("FirstName", "Nancy");
dr.set("LastName", "Doe");
dt.getRows().add(dr);
dr = dt.newRow();
dr.set("Receipt", "Andrew<Andrew@somedomain.com>");
dr.set("FirstName", "Andrew");
dr.set("LastName", "Doe");
dt.getRows().add(dr);
dr = dt.newRow();
dr.set("Receipt", "Janet<Janet@somedomain.com>");
dr.set("FirstName", "Janet");
dr.set("LastName", "Doe");
dt.getRows().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.setSecurityOptions(SecurityOptions.Auto);
// Send messages in bulk
client.send(messages);
} catch (MailException ex) {
System.err.println(ex);
}
catch (SmtpException ex) {
System.err.println(ex);
}
System.out.println("Message sent after performing mail merge.");
}
// Template routine to provide signature
static Object getSignature(Object[] args) {
return "Aspose.Email Team<br>Aspose Ltd.<br>" + new Date().toString();
}
إجراء دمج بريد على مستوى الصفوف
يمكن للمستخدم دمج صف بيانات فردي أيضًا للحصول على نسخة مكتملة ومُعَدّة MailMessage الكائن. الـ TemplateEngine.merge يمكن استخدام الطريقة لإجراء دمج بريد على مستوى الصفوف.
// Create message from the data in current row.
MailMessage message = engine.merge(currentRow);