@Ribachok

Как отправить файл на почту?

Есть файл file.txt, я бы хотел отправить его себе на гмейл почту. Как это можно сделать, желательно используя средства только голого c++, без библиотек?
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ответы на вопрос 2
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
желательно используя средства только голого c++, без библиотек?


Если вы в линуксе, то введите в терминале "man sendmail". Разберитесь с командой и вызывайте ее из C++ программы через system.

Иначе - разбирайтесь с сокетами, протокалами SMTP, TCP. Простенький клиент строчек на 3000 сможете написать через пару месяцев, наверное. Ну, или, все-таки, пересмотрите ваши условия и используйте библиотеки или более удобный для этого язык. Так в питоне это делается буквально в 2 строчки.
Ответ написан
Комментировать
CityCat4
@CityCat4
Если я чешу в затылке - не беда!
Если по условиям задачи допустимо применение внешних команд - то сначала man mail, потом отработка отправки файла через команду mail, потом вызов этого всего через system() или exec()..
Если нужно указывать от кого - вместо mail используется sendmail.
Если использование внешних команд недопустимо и нужно/хочется обойтись чиста средствами языка (это конечно глупо, но познавательно зело) - берем RFC822, изучаем формат сообщения электронной почты, потом берем и реализуем это.

То есть нужно будет:
- сформировать правильные заголовки письма
- сформировать вложение (mime-encoded, не забываем про то, что в письме могут присутствовать только отображаемые ASCII, никаких спецсимволов!)
- подключиться к серверу, передать начальную информацию (кто ты, от кого, кому)
- не забыть про SPF/DKIM/DMARC (иначе с большой долей вероятности письмо будет в корзине, если вообще будет принято - гмыло в этом отношении прост как полено)
- передать сформированное письмо

Wataru правильно сказал - пара месяцев напряженной работы уйдет, зато сколько скиллов сразу подтянете :D
На баше кстати одной строчкой делается (если без изменения From:) и двумя-тремя - если с изменением.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы