static void Main(string[] args) { try { string connectionString = "URL=corbaloc::1.2@andrewsalko:11301/AccessRoot;Login=Деловод;Password=123;AuthenticationAlgorithm=FossDoc;"; using (ISession session = (ISession)Foss.FossDoc.ApplicationServer.Connection.Connector.Connect(connectionString)) { //менеджер для роботи з об'єктами (через нього ви отримаєте будь-які властивості, наприклад Тема листа, відправник, наявність файлів та інше) var obj = session.ObjectDataManager; //менеджер для роботи з поштою var msg = session.MessagingManager; //Щоб надіслати лист, треба спочатку його створити (на сервері). Ми будемо створювати у папці "Вихідні". //отримаємо папку "Вихідні" поточного користувача: OID folderID = msg.GetSpecialMessagingFolder(SpecialMessagingFolder.Outbox); //тема string subject = "This is email subject"; //propsForMessage - тут властивості нового листа, який буде створено у папці: List <ObjectProperty> propsForMessage = new List <ObjectProperty> { //категорія - "Вихідний лист" (email) Converters.Properties.ObjectPropertyBuilder.Create(Foss.FossDoc.ApplicationServer.Messaging.Schema.OutboundMessage.CategoryOID, Foss.FossDoc.ApplicationServer.ObjectDataManagment.Schema.PropertyTags.ObjectCategoryOID), //тема листа Converters.Properties.ObjectPropertyBuilder.Create(subject, Foss.FossDoc.ApplicationServer.Messaging.Schema.Message.PR_SUBJECT), //Важливість (0 - низька, 1- нормальна, 2 - висока) Converters.Properties.ObjectPropertyBuilder.Create(1, Foss.FossDoc.ApplicationServer.Messaging.Schema.Message.PR_IMPORTANCE), //"IPM.Note" класс повідомлення Converters.Properties.ObjectPropertyBuilder.Create("IPM.Note", Foss.FossDoc.ApplicationServer.Messaging.Schema.Message.PR_MESSAGE_CLASS) }; //кодування тіла Encoding enc = Encoding.UTF8; propsForMessage.Add(Converters.Properties.ObjectPropertyBuilder.Create(enc.CodePage, Foss.FossDoc.ApplicationServer.Messaging.Schema.Message.PR_INTERNET_CPID)); string emailBody = "Це зміст листа, просто текстовий. Hello this is email"; byte[] bodyBytes = enc.GetBytes(emailBody); //тіло йде у бінарному вигляді propsForMessage.Add(Converters.Properties.ObjectPropertyBuilder.Create(bodyBytes, Foss.FossDoc.ApplicationServer.Messaging.Schema.Message.PR_BODY)); //Додаємо властивості відправника: //Якщо у користувача кілька облікових записів пошти, беремо за замовчуванням: var defaultAddr = msg.GetCurrentUserDefaultAddressDescription(); if (defaultAddr == null) { //беремо тільки адреси користувача, а не делегованих йому: var allAddrDescr = msg.GetCurrentUserAddressDescriptions(UserAddresses.User); if (allAddrDescr != null) { //за допомогою linq знайдемо лише перший обл.запис де тип адреси "FMAIL" (наш приклад для пошти FossMail) //Якщо ви шукаєте звичайний email, то вкажіть SMTP. defaultAddr = allAddrDescr.FirstOrDefault(item => (item.Type != null && item.Type == "FMAIL")); } } if (defaultAddr == null) { _Log("Помилка, у користувача не знайдено облікових записів для роботи з поштою"); return; } //властивості відправника: propsForMessage.Add(Converters.Properties.ObjectPropertyBuilder.Create(defaultAddr.Address, Foss.FossDoc.ApplicationServer.Messaging.Schema.Message.PR_SENDER_EMAIL_ADDRESS)); propsForMessage.Add(Converters.Properties.ObjectPropertyBuilder.Create(defaultAddr.Type, Foss.FossDoc.ApplicationServer.Messaging.Schema.Message.PR_SENDER_ADDRTYPE)); propsForMessage.Add(Converters.Properties.ObjectPropertyBuilder.Create(defaultAddr.Name, Foss.FossDoc.ApplicationServer.Messaging.Schema.Message.PR_SENDER_NAME)); //якщо необхідно отримати звіти про доставку або прочитання листа: //Звіт про доставку потрібен propsForMessage.Add(Converters.Properties.ObjectPropertyBuilder.Create(true, Foss.FossDoc.ApplicationServer.Messaging.Schema.Message.PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED)); //Звіт про прочитання потрібен propsForMessage.Add(Converters.Properties.ObjectPropertyBuilder.Create(true, Foss.FossDoc.ApplicationServer.Messaging.Schema.Message.PR_READ_RECEIPT_REQUESTED)); OID emailMessageID = obj.CreateObject(folderID, Foss.FossDoc.ApplicationServer.Messaging.Schema.MessagesFolder.PR_CONTAINER_CONTENTS, propsForMessage.ToArray()); //Тепер, коли обєкт листа вже створено на сервері, ми можемо додати файли (якщо це потрібно) //Для завантаження файлів використаємо утілітний класс з інтерфейсів бізнес-логіки. string fileName = @"C:\Documents\test.docx"; //Варіант 1: це просто через утілітний класс, якщо не треба замислюватися як воно працює //Attach att = new Attach(fileName); //att.CreateAttach(session, emailMessageID); //Варіант 2: (дозволяє зрозуміти як саме програмно створюються файли у документах) _CreateAttach(obj, fileName, emailMessageID); //Лист створено, файл завантажено, тепер потрібно створити таблицю отримувачів: //У випадку використання транспорту FossMail адреса наприклад, може бути така: AddressDescription addr = new AddressDescription("C:UA/ADMD:CENTER_REGION/PRMD:CENTER/ORG:COMPANY/OU:OFFICE/PN:DELOVOD", "FMAIL", "Шевченко Тарас"); //Властивості об'єкта "Отримувача": List <ObjectProperty> recipientProps = new List <ObjectProperty> { //категорія-відправник Converters.Properties.ObjectPropertyBuilder.Create(Foss.FossDoc.ApplicationServer.Messaging.Schema.Recipient.CategoryOID, Foss.FossDoc.ApplicationServer.ObjectDataManagment.Schema.PropertyTags.ObjectCategoryOID), //адреса Converters.Properties.ObjectPropertyBuilder.Create(addr.Address, Foss.FossDoc.ApplicationServer.Messaging.Schema.Address.PR_EMAIL_ADDRESS), //тип адреси Converters.Properties.ObjectPropertyBuilder.Create(addr.Type, Foss.FossDoc.ApplicationServer.Messaging.Schema.Address.PR_ADDR_TYPE), //імя Converters.Properties.ObjectPropertyBuilder.Create(addr.Name, Foss.FossDoc.ApplicationServer.Messaging.Schema.Address.PR_DISPLAY_NAME), //тип (Кому) Converters.Properties.ObjectPropertyBuilder.Create(1, Foss.FossDoc.ApplicationServer.Messaging.Schema.Recipient.PR_RECIPIENT_TYPE), //тип обєкту Converters.Properties.ObjectPropertyBuilder.Create((int)ObjectType.MailUser, Foss.FossDoc.ApplicationServer.Messaging.Schema.Object.Attributes.PR_OBJECT_TYPE.Tag), //PR_SEARCH_KEY для отримувача Converters.Properties.ObjectPropertyBuilder.Create(Encoding.UTF8.GetBytes(string.Format("{0}:{1}", addr.Type.ToUpperInvariant(), addr.Address)), Foss.FossDoc.ApplicationServer.Messaging.Schema.Object.Attributes.PR_SEARCH_KEY.Tag) }; //створили у повідомленні "Отримувача". Якщо треба, таким чином додайте й інших. obj.CreateObject(emailMessageID, Foss.FossDoc.ApplicationServer.Messaging.Schema.Message.PR_MESSAGE_RECIPIENTS, recipientProps.ToArray()); //А тепер вже "Відправка листа" - виклик SubmitMessage msg.SubmitMessage(emailMessageID); //щоб виглядало у "Відправлених" прочитаним: msg.SetReadFlag(new OID[] { emailMessageID }, true); _Log("Відправку листа виконано"); } //using } catch (Exception ex) { _Log(ex.ToString()); } }
public bool ValidAddressAdded() { return(!AddressDescription.IsNullOrWhiteSpace()); }