Curl - работаем с электронной почтой

В статье рассказывается, как с помощью консольной утилиты curl можно проверять и отправлять электронную почту.

Анатолий Остроумов

curlemailimapsmtp

205 Words

2024-01-19 13:54 +0300


Проверить почту по протоколу IMAP

Чтобы проверить, какие расширения поддерживает IMAP сервер, можно вызвать такую команду

#!/usr/bin/env
auth="vodolaz095:password"
host=imaps://imap.example.org

curl --url $host --user $auth -X "CAPABILITY"

Dovecot сервер версии 2.4.4, с которым я эксперементировал, поддерживал эти функции:

CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY PREVIEW=FUZZY PREVIEW STATUS=SIZE SAVEDATE LITERAL+ NOTIFY SPECIAL-USE ACL RIGHTS=texk

Эта команды показывают все доступные директории:

#!/usr/bin/env bash

auth="vodolaz095:password"
host=imaps://imap.example.org

curl --url $host --user $auth -X 'LIST "" "*"'

Эта команда считает сообщения в директории INBOX:

#!/usr/bin/env bash

auth="vodolaz095:password"
host=imaps://imap.example.org

curl --url $host --user $auth -X 'STATUS INBOX (MESSAGES)'

Другие примеры опубликованы тут: https://everything.curl.dev/usingcurl/imap.html

Отправить почту по SMTP Submission протоколу

Сначала надо создать текстовой файл email.txt с письмом, которое мы хотим послать.


From: vodolaz095 <[email protected]>
To: vodolaz095 <[email protected]>
Subject: проверка почтой
Date: Mon, 17 Dec 2024 08:45:16

Проверка почты, если вы не получили это письмо, то я отправлю его ещё один раз.
Всех благ.
С уважением, Анатолий.

Потом письмо можно отправить такой командой

#!/usr/bin/env bash

auth="vodolaz095:password"

curl smtp://smtp.example.org \
  --ssl-reqd \
  --user $auth \
  --mail-from [email protected] \ 
  --mail-rcpt [email protected] \
  --upload-file email.txt

Другие примеры опубликованы тут: https://everything.curl.dev/usingcurl/smtp.html