Как отправлять простые текстовые электронные письма, используя cURL - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь отправить электронное письмо, используя cURL (к сожалению, я не могу использовать API или библиотеку php). Я могу легко отправить письмо в формате HTML - есть множество демонстраций и примеров в Интернете. Однако я изо всех сил пытаюсь отправить простое текстовое электронное письмо.

Я пытался адаптировать примеры HTML, но безуспешно.

Я сейчас отправляю:

--mail-from john@organisation.com
--mail-rcpt jane@destination.com
--user john.doe:Pa55w0rd
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
From: John Doe <john@organisation.com>
To: Jane Doe <jane@destination.com>
Subject: Test email

Some text

Однако сервер отвечает: 252 2.1.5 Проверка не поддерживается

Покопавшись, я обнаружил, что эта ошибка, по-видимому, связана с попыткой проверки учетной записи пользователя (что не поддерживается на многих почтовых серверах по понятным причинам безопасности), а не с попыткой отправки почты.

Мой синтаксис явно неправильный, так как я НЕ пытаюсь проверить пользователя, но я не могу найти в Интернете примеров для работы. Но я успешно отправил письмо HTML со встроенными изображениями через cURL на тот же почтовый сервер!

1 Ответ

1 голос
/ 08 мая 2019

Если вы используете опцию -T (--upload-file), curl не будет выдавать команду VRFY.

См. https://ec.haxx.se/usingcurl-smtp.html

Пример:

curl smtp://mail.example.com --mail-from myself@example.com \
--mail-rcpt receiver@example.com \
--upload-file email.txt

Когда в curl есть сообщение для отправки, оно не будет VRFY, а вместо этого будет MAIL FROM...RCPT TO.

С man curl:

- mail-rcpt (SMTP) Укажите один адрес, имя пользователя или имя списка рассылки.

При выполнении пересылки почты получатель должен указать действительный адрес электронной почты, на который будет отправлено письмо.(Добавлено в 7.20.0)

При выполнении проверки адреса (команда VRFY) в качестве имени пользователя или имени пользователя и домена должен быть указан получатель (согласно разделу 3.5 RFC5321).(Добавлено в 7.34.0)

Это не очень хорошо заявлено, но если в команде отсутствует сообщение (-T или --upload-file), то curl выполняет проверку адреса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...