URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 94908
[ Назад ]

Исходное сообщение
"curl и отправка почты через smtp"

Отправлено Raven77 , 06-Авг-13 19:03 
Решил написать об этом, чтобы не пропало и вдруг кому-нибудь пригодится, так как в Рунете ничего нашел на эту тему, нашел только на англоязычных сайтах.
Коротко, curl способен отправлять почту через smtp с ssl авторизацией (и без нее)
Работает в gmail и yandex, проверено:  

curl --url "smtps://smtp.gmail.com:465" --ssl-reqd --mail-from "username@gmail.com" --mail-rcpt "usernam1@yandex.ru" --upload-file mail.txt --user "username@gmail.com:My_Password" --insecure

Файл mail.txt выглядит  как обычное письмо
From: "Vasja" <username@gmail.com>
To: "Ivan" <username1@yandex.ru>
Subject: "О чем-то"

Тело письма.


Можно авторизоваться без отправки файла, тогда сервер будет ожидать ввода письма, которое оформляются также как в файле.
P.S. Написал об этом, потому что пока искал решение встретил много "нерешенных" вопросов на формах на тему, как отправить письмо из консоли и т.д.


Содержание

Сообщения в этом обсуждении
"curl и отправка почты через smtp"
Отправлено allez , 07-Авг-13 21:22 
>[оверквотинг удален]
> Файл mail.txt выглядит  как обычное письмо
> From: "Vasja" <username@gmail.com>
> To: "Ivan" <username1@yandex.ru>
> Subject: "О чем-то"
> Тело письма.
> Можно авторизоваться без отправки файла, тогда сервер будет ожидать ввода письма, которое
> оформляются также как в файле.
> P.S. Написал об этом, потому что пока искал решение встретил много "нерешенных"
> вопросов на формах на тему, как отправить письмо из консоли и
> т.д.


       --mail-auth <address>
              (SMTP)  Specify  a  single address. This will be used to specify
              the authentication address (identity)  of  a  submitted  message
              that is being relayed to another server.

              (Added in 7.25.0)

       --mail-from <address>
              (SMTP)  Specify  a single address that the given mail should get
              sent from.

              (Added in 7.20.0)

       --max-filesize <bytes>
              Specify the maximum size (in bytes) of a file  to  download.  If
              the  file requested is larger than this value, the transfer will
              not start and curl will return with exit code 63.

              NOTE: The file size is not always known prior to  download,  and
              for such files this option has no effect even if the file trans-
              fer ends up being larger than this given  limit.  This  concerns
              both FTP and HTTP transfers.

Manual page curl(1) line 929/2217 46%


Гм, похоже редкий юзер осиливает прочесть man curl до середины. :-)
А уж про man mail/mailx я даже и заикаться побаиваюсь. :-)

"curl и отправка почты через smtp"
Отправлено Raven77 , 07-Авг-13 21:54 
Я прочитал man по curl, но всегда при чтении манов остается вопрос, работает ли та или иная
фича программы.
Поскольку  у меня не получилось грамотно составить команду, полез рыскать по сети и обнаружил, что в Рунете об этом ни слова, при этом наткнулся на несколько топиков с вопросами об отправке почты из консоли, без внят. ного решения

"curl и отправка почты через smtp"
Отправлено Raven77 , 18-Авг-13 23:10 
Только вот не понимаю, можно ли в консоли приложить вложенный файл, изображение, например.
Или нужно его вписывать в файл с телом письма?
Вроде бы есть флаг -d и -F
Но применение их относительно отправки почты остается туманным.

"curl и отправка почты через smtp"
Отправлено allez , 19-Авг-13 06:10 
> Только вот не понимаю, можно ли в консоли приложить вложенный файл, изображение,
> например.
> Или нужно его вписывать в файл с телом письма?

Да, в MIME-кодированном виде. Curl сам по себе не умеет отправлять письма с вложениями.

> Вроде бы есть флаг -d и -F
> Но применение их относительно отправки почты остается туманным.

Ничего туманного. В мане ясно и недвусмысленно указано на то, что эти опции касаются
именно HTML-форм и работы по пртоколу HTTP:


       -d, --data <data>
              (HTTP)  Sends  the  specified  data  in a POST
              request to the HTTP server, in  the  same  way
              that  a browser does when a user has filled in
              an HTML form and presses  the  submit  button.
              This  will  cause curl to pass the data to the
              server using the  content-type  application/x-
              www-form-urlencoded.  Compare to -F, --form.

..........
..........
..........

       -F, --form <name=content>
              (HTTP) This lets curl emulate a filled-in form
              in which a user has pressed the submit button.
              This causes curl to POST data using  the  Con-
              tent-Type multipart/form-data according to RFC
              2388. This enables uploading of  binary  files
              etc.