@@ -235,6 +235,130 @@ System.Console.WriteLine(surName.Value); // "Cane"
235235```
236236</details >
237237
238+ #### Model API
239+ There are 2 ways to operate with Eml/VCard/iCalendar files available in Aspose.Email Cloud.
240+ First is operating files as property sets. For example:
241+ <details >
242+ <summary>Create iCalendar using property set</summary>
243+
244+ ``` csharp
245+ var fileName = $" {Guid .NewGuid ().ToString ()}.ics" ;
246+ startDate = startDate ?? DateTime .UtcNow .Date .AddDays (1 ).AddHours (12 );
247+ var endDate = startDate .Value .AddHours (1 );
248+ var request = new CreateCalendarRequest (fileName ,
249+ new HierarchicalObjectRequest (
250+ new HierarchicalObject (" CALENDAR" , null ,
251+ new List <BaseObject >
252+ {
253+ new PrimitiveObject (" LOCATION" , null , " location" ),
254+ new PrimitiveObject (" STARTDATE" , null , startDate .Value .ToString (" u" )),
255+ new PrimitiveObject (" ENDDATE" , null , endDate .ToString (" u" )),
256+ new HierarchicalObject (" ORGANIZER" , null ,
257+ new List <BaseObject >
258+ {
259+ new PrimitiveObject (" ADDRESS" , null , " organizer@am.ru" ),
260+ new PrimitiveObject (" DISPLAYNAME" , null , " Piu Man" )
261+ }),
262+ new HierarchicalObject (" ATTENDEES" , null ,
263+ new List <BaseObject >
264+ {
265+ new IndexedHierarchicalObject (" ATTENDEE" , null , 0 ,
266+ new List <BaseObject >
267+ {
268+ new PrimitiveObject (" ADDRESS" , null , " attendee@am.ru" ),
269+ new PrimitiveObject (" DISPLAYNAME" , null ,
270+ " Attendee Name" )
271+ })
272+ })
273+ }), new StorageFolderLocation (StorageName , folder )));
274+ await emailApi .CreateCalendarAsync (request );
275+ ```
276+ </details >
277+
278+ And second way is ** Model API** , where files are represented using models:
279+ <details open >
280+ <summary>Operate iCalendar using Model API</summary>
281+
282+ First, we can create ** CalendarDto** object:
283+
284+ ``` csharp
285+ var calendar = new CalendarDto
286+ {
287+ Attendees = new List <MailAddress >
288+ {
289+ new MailAddress (" Attendee Name" , " attendee@am.ru" , " Accepted" )
290+ },
291+ Description = " Some description" ,
292+ Summary = " Some summary" ,
293+ Organizer = new MailAddress (" Organizer Name" , " organizer@am.ru" , null ),
294+ StartDate = DateTime .UtcNow .AddDays (1 ).AddHours (12 ),
295+ EndDate = DateTime .UtcNow .AddDays (1 ).AddHours (13 ),
296+ Location = " Some location"
297+ };
298+ ```
299+ This model could be saved as an .ics file:
300+ ``` csharp
301+ var calendarFileName = $" {Guid .NewGuid ()}.ics" ;
302+ var folderLocation = new StorageFolderLocation (StorageName , folder );
303+ await emailApi .SaveCalendarModelAsync (
304+ new SaveCalendarModelRequest (calendarFileName , new StorageModelRqOfCalendarDto (
305+ calendar , folderLocation )));
306+ ```
307+ Or converted to an AlternateView:
308+ ``` csharp
309+ var alternate = await emailApi .ConvertCalendarModelToAlternateAsync (
310+ new ConvertCalendarModelToAlternateRequest (
311+ new CalendarDtoAlternateRq (calendar , " Create" , null )));
312+ ```
313+ This AlternateView can be added to ** EmailDto** object:
314+ ``` csharp
315+ var email = new EmailDto
316+ {
317+ AlternateViews = new List <AlternateView > {alternate },
318+ From = new MailAddress (" From address" , " organizer@am.ru" , " Accepted" ),
319+ To = new List <MailAddress > {new MailAddress (" To address" , " attendee@am.ru" , null )},
320+ Subject = " Some subject" ,
321+ Body = " Some body"
322+ };
323+ ```
324+ So, the email variable now represents an email with iCalendar in it. This email can be saved to a .eml file:
325+ ``` csharp
326+ var emailFile = $" {Guid .NewGuid ().ToString ()}.eml" ;
327+ await emailApi .SaveEmailModelAsync (
328+ new SaveEmailModelRequest (" Eml" , emailFile ,
329+ new StorageModelRqOfEmailDto (email ,
330+ folderLocation )));
331+ ```
332+ Also, email can be sent using built-in email client:
333+ ``` csharp
334+ // First, if there is no email client account configuration on storage:
335+ // Create IMAP account
336+ var imapFile = $" {Guid .NewGuid ().ToString ()}.account" ;
337+ var imap = new SaveMailAccountRequest (
338+ new SaveEmailAccountRequest (
339+ " imap.am.ru" , 993 , " organizer@am.ru" , " Auto" , " IMAP" , " IMAP account" ,
340+ new StorageFileLocation (StorageName , folder , imapFile ), " OrganizerPassword" ));
341+ await emailApi .SaveMailAccountAsync (imap );
342+ // Create SMTP account
343+ var smtpFile = $" {Guid .NewGuid ().ToString ()}.account" ;
344+ var smtp = new SaveMailAccountRequest (
345+ new SaveEmailAccountRequest (
346+ " smtp.am.ru" , 465 , " organizer@am.ru" , " Auto" , " SMTP" , " SMTP account" ,
347+ new StorageFileLocation (StorageName , folder , smtpFile ), " OrganizerPassword" ));
348+ await emailApi .SaveMailAccountAsync (smtp );
349+
350+ // Then, send email
351+ await emailApi .SendEmailModelAsync (
352+ new SendEmailModelRequest (
353+ new SendEmailModelRq (
354+ imapFile ,
355+ smtpFile ,
356+ new StorageFolderLocation (StorageName , folder ),
357+ email )));
358+ ```
359+ </details >
360+
361+
238362# Licensing
239363All Aspose.Email Cloud SDKs, helper scripts and templates are licensed under [ MIT License] ( LICENSE ) .
240364
0 commit comments