Я часто использую telnet или netcat для подключения к SMTP-серверам и отправки электронного письма в качестве теста.
Кто-нибудь знает, как отправить электронное письмо с помощью telnet или netcat?но также прикрепите файл? Возможно, есть и лучшие способы, но я все равно хочу знать :-)
Я был бы рад решению, использующему небольшую оболочку bash для достижения цели, но не хочу использовать какие-либо другие инструменты...
решение1
Итак, используя комментарии всех как отправную точку, я придумал эту глупую путаницу :-) ...
{
sleep 5;
echo 'ehlo';
sleep 3;
echo 'MAIL FROM:<[email protected]>';
sleep 3;
echo 'RCPT TO: <kyle@test_dest.com>';
sleep 3;
echo 'DATA';
sleep 3;
echo -e 'To:[email protected]\nMIME-Version: 1.0 (mime-construct 1.9)\nContent-Type: application/zip\nContent-Transfer-Encoding: base64\n\n';
dd if=/dev/urandom bs=4 count=10 2>/dev/null | openssl base64;
echo '.';
} | telnet mx1.testdest.com 25
решение2
Ой. Вам придется закодировать вложение в base64 и создать заголовки MIME.
Вместо того чтобы каждый раз создавать новое сообщение «на лету», вероятно, было бы проще просто отправить себе по электронной почте очень короткое сообщение-пример из «реальной» почтовой программы (используя работу, проделанную людьми, которые ее написали, по преобразованию вложения в нужную кодировку и созданию заголовков MIME).
Сохраните это сообщение в текстовый файл с заголовками (конечно, удалив заголовок транспорта) и просто измените / скопируйте / вставьте его в telnet или netcat для будущих сеансов.
решение3
Хотя ручное тестирование SMTP-серверов возможно и целесообразно, использовать специально предназначенный для этого инструмент будет гораздо проще.
В этой статье объясняется SWAKS. swaks предназначен для тестирования smtp-сервера. Поддерживает вложения, аутентификацию и шифрование!
решение4
Telnet — отправка электронной почты с несколькими вложениями
cat вложение.zip | base64 > zip.txt cat вложение.pdf | base64 > pdf.txt # Content-Type: text/csv; name="$FILE" # для CSV-файлов # Content-Type: application/x-msdownload; name="$FILE" # для исполняемого файла # Content-Type: text/xml; name="$FILE" # для xml-файлов или попробуйте application/xml telnet smtp.сервер.дом 25 ХЕЛО ПОЧТА ОТ:[email protected] RCPT КОМУ:[email protected] ДАННЫЕ Тема: Тестовое письмо От:[email protected] К:[email protected] MIME-версия: 1.0 Content-Type: multipart/mixed; border="X-=-=-=-text border" --X-=-=-=-граница текста Тип содержимого: текст/обычный Оставьте здесь свое сообщение... --X-=-=-=-граница текста Тип содержимого: application/zip; name="file.zip" Кодирование передачи содержимого: base64 Содержимое-Расположение: вложение; имя_файла="file.zip" UEsDBBQAAAAIAG1+zEoQa.... скопировать/вставить zip.txt --X-=-=-=-граница текста Тип содержимого: text/pdf; имя="file.pdf" Кодирование передачи содержимого: base64 Содержимое-Расположение: вложение; имя_файла="file.pdf" UEsDBBQAAAAIAG1+zEoQa.... копировать/вставить pdf.txt --X-=-=-=-граница текста . ПОКИДАТЬ