Почтовый обмен зашифрованными сообщениями - 8 Декабря 2013 - Профессиональные решения для 1С 8.2
      Профессиональные решения для 1С 8.2 Среда, 29.03.2017, 06:16
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Поделиться ссылкой


Главная » 2013 » Декабрь » 8 » Почтовый обмен зашифрованными сообщениями
15:59
Почтовый обмен зашифрованными сообщениями
Рассмотрим пример применения шифрования на практике. Так же как и в предыдущей обработке воспользуемся библиотекой capicom.dll. Представленная обработка использует функционал 1С для работы с электронной почтой. На закладке настроек нужно настроить почтовый профиль. На закладке "письмо" заполним получателя, тему, ключ шифрования и тело письма. Можно отправить самому себе, чтобы протестировать. Используется симметричный ключ, то есть при шифровании и дешифровании нужно вводить одинаковый ключ. При получении письма, в поле "письмо" будет отображаться отправитель, тема и текст письма. Для этого нужно нажать кнопку "получить".
 
Код модуля формы представлен ниже:


Функция Шифрование(Текст,ШифроКлюч)
  oCAPI = Новый ComОбъект("CAPICOM.EncryptedData");
    oCAPI.Content = Текст;
    oCAPI.setsecret(ШифроКлюч);
    НовТекст = oCAPI.encrypt();
    oCAPI=Неопределено;
    Возврат НовТекст;
КонецФункции
Функция ДеШифрование(Текст,ШифроКлюч)
  oCAPI = Новый ComОбъект("CAPICOM.EncryptedData");
    oCAPI.setsecret(ШифроКлюч);
    oCAPI.decrypt(Текст);
  НовТекст =oCAPI.Content;   
    oCAPI=Неопределено;
    Возврат НовТекст;
КонецФункции
Процедура ОсновныеДействияФормыОтправить(Кнопка)
    Почта = Новый ИнтернетПочта;
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераSMTP = СокрлП(АдресСервераSMTP);
    Профиль.ПортSMTP = число(СокрЛП(ПортSMTP));
    Профиль.АдресСервераPOP3 = СокрЛП(АдресСервераPOP3);
    Профиль.ПортPOP3 = Число(СокрЛП(ПортPOP3));
    Профиль.Пароль = СокрЛП(Пароль);
    Профиль.ПарольSMTP = СокрЛП(ПарольSMTP);
    Профиль.АутентификацияSMTP=СпособSMTPАутентификации.ПоУмолчанию;
    Профиль.АутентификацияPOP3=СпособPOP3Аутентификации.Обычная;
    Профиль.Пользователь = сокрЛП(Пользователь);
    Профиль.ПользовательSMTP = СокрЛП(ПользовательSMTP);
    Профиль.ВремяОжидания = 100;
    Попытка
        Почта.Подключиться(Профиль);
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Тема = Тема+"(encrypt)";
    Сообщение.Отправитель.Адрес = АдресОтправителя;
    Сообщение.Получатели.Добавить(Получатель);
    Шифровка=Шифрование(Письмо,Ключ);
    Сообщение.Тексты.Добавить(Шифровка,ТипТекстаПочтовогоСообщения.ПростойТекст);
    Сообщение.ОбработатьТексты();
    Попытка
        Почта.Послать(Сообщение);
    Исключение
        Сообщить( ОписаниеОшибки());
    КонецПопытки;   
КонецПроцедуры
Процедура ОсновныеДействияФормыПолучить(Кнопка)
    Почта = Новый ИнтернетПочта;
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераSMTP = СокрлП(АдресСервераSMTP);
    Профиль.ПортSMTP = число(СокрЛП(ПортSMTP));
    Профиль.АдресСервераPOP3 = СокрЛП(АдресСервераPOP3);
    Профиль.ПортPOP3 = Число(СокрЛП(ПортPOP3));
    Профиль.Пароль = СокрЛП(Пароль);
    Профиль.ПарольSMTP = СокрЛП(ПарольSMTP);
    Профиль.АутентификацияSMTP=СпособSMTPАутентификации.ПоУмолчанию;
    Профиль.АутентификацияPOP3=СпособPOP3Аутентификации.Обычная;
    Профиль.Пользователь = сокрЛП(Пользователь);
    Профиль.ПользовательSMTP = СокрЛП(ПользовательSMTP);
    Профиль.ВремяОжидания = 100;
    Попытка
        Почта.Подключиться(Профиль);
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    Попытка
        мас = Почта.Выбрать(ложь);
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    ТекстНаЭкран="";
    Попытка
        Для Сч = 0 по мас.Количество()-1 цикл
            ПС = мас[Сч];        
            Если Найти(ПС.Тема,"encrypt") <> 0 Тогда
                ТекстНаЭкран=ТекстНаЭкран+"<<
                |Отправитель:"+ПС.Отправитель.Адрес+Символы.ПС+
                "Тема:"+ПС.Тема+Символы.ПС;
                Для Каждого ТекТ из ПС.Тексты Цикл
                    ТекстНаЭкран=ТекстНаЭкран+
                    "=========================="+Символы.ПС+
                    "Сообщение:"+Дешифрование(ТекТ.Текст,Ключ)+Символы.ПС+
                    "==========================";
                КонецЦикла;
                ТекстНаЭкран=ТекстНаЭкран+Символы.ПС+
                ">>"+Символы.ПС;
            КонецЕсли;
        КонецЦикла;
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    Почта.Отключиться();
    Почта=Неопределено;
    Письмо=ТекстНаЭкран;
КонецПроцедуры
 
 
Код 1С добавлен на сайт при помощи оригинальной обработки
 
На картинке показан пример настроек профиля:
Пример отправки письма:
В почтовом ящике письмо имеет вид:
И пример полученного расшифрованного письма:
 
Для включения функционала в какую-нибудь конфигурацию целесообразно создать справочники с хранением настроек почтового профиля, паролей для обмена сообщений с пользователями, адресную книгу и т.п. Обработку можно скачать здесь ПочтовыйОбмен.epf
Просмотров: 984 | Добавил: Programmer1C | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Календарь
«  Декабрь 2013  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
3031
Архив записей
Друзья сайта
  • Создать сайт
  • Современная Ароматерапия
  • Биодобавки из США
  • Заработок для web-мастера

  • Рейтинг@Mail.ru
    www.professional-1c.ru © 2017
    Бесплатный хостинг uCoz