Прикрепить файлы к письму С++, С/СLI, MS VS 2017

Тема в разделе "ASM, С/С++, Delphi, Java", создана пользователем disker, 24 янв 2019.

  1. disker

    disker

    Регистр.:
    28 авг 2007
    Сообщения:
    596
    Симпатии:
    59
    Поставил MS VS 2017, решил немного подучить С++, но столкнулся с незнанием как прикрепить текстовые файлы к письму если файлов несколько штук и они находятся в папке (к примеру d:\files\ ). Отправка посредством SMTP (отправку пустого письма уже реализовал, это не проблема, позже кину сюда код, как буду на работе).

    Сам алгоритм приблизительно понимаю, но как перенести в код не могу разобраться. Алгоритм хочу использовать такой: находим папку, считываем количество файлов (забегая наперед скажу, что нашел уже наполовину готовую функцию в MS VS2017, но ошибки не разрешают доработать программу), по счетчику прикрепляем их к письму (хотя вариант со счетчиком может и не нужен после появления кода ниже в 2017). Итак код дающий листинг файлов в папке (надеюсь именно это он делает, на забугорном сайте именно так он расписан) :

    Код:
    #include <string>
    #include <iostream>
    #include <filesystem>
    namespace fs = std::filesystem;
    
    int main()
    {
        std::string path = "/path/to/directory";
        for (const auto & entry : fs::directory_iterator(path))
            std::cout << entry.path() << std::endl;
    }
    
    Ткните носом куда зацепиться и с чего начать.. :)
     
    Последнее редактирование: 24 янв 2019
  2. disker

    disker

    Регистр.:
    28 авг 2007
    Сообщения:
    596
    Симпатии:
    59
    В общем, тему можно закрывать. Как оказалось - в 2017 студии данная функция хоть и описана, но пока не работает, так как считается експериментальной и нужно чтобы заработала прописывать в начале файла experimental (точно не помню как, так как проект на работе, а пишу с домашнего ПК, но только так удалось заставить работать эту связку). В конечном итоге я от неё отказался, взял более старый пример на основе GetFiles, может кому пригодится пример вот такой (код полностью рабочий, проверял) :

    Код:
    array<String^>^ files = IO::Directory::GetFiles("d:\\files", "*.txt");
        for each (String^ file in files)
        {
             Attachment^ dan = gcnew Attachment(file, MediaTypeNames::Application::Octet);
             Message->Attachments->Add(dan);
        }