Я пытаюсь отправить почту из командной строки с помощью openssl. Я могу подключиться к SMTP-серверу Gmail через порт 465, и аутентификация прошла успешно. ПОЧТА ОТ и rcpt тоже нормально работают. Затем, когда я ввожу данные, я получаю 354 с продолжением, что тоже очень хорошо. В данные я ввожу следующее:
FROM: <xxx@gmail.com>
To: <XXX@gmail.com> // I am sending and receiving the mail to my account itself for test purposes
Subject: test
hello!
.
Теперь возникает проблема, когда я ввожу. , курсор просто мигает, я не получаю сообщение 250 OK, ожидающее ответа о доставке.
Пожалуйста, помогите !!
Все это пробую на ubuntu 9.10.
ах ... но после прочтения этой темы мне потребовались часы, чтобы это выяснить !!
размещение моего решения здесь:
повсюду в Интернете вам говорят, что вы должны использовать переключатель -crlf для начальной команды подключения - что я и сделал.
Однако ... это верно только для Linux / unix! В Windows вы не должны использовать этот переключатель!
файл. должен быть в отдельной строке ... за которым следует другой возврат каретки ...
т.е.
Hello! .
(это могло быть форматирование serverfault, которое все испортило ... но проверьте.)
в коде ... это должно быть <cr>. <cr> или использовать crlf вместо просто cr.
У меня была эта проблема (только с Gmail) и я увидел этот вопрос. В конце концов я понял, что создание CRLF и отправка его вместо '\ n' устранило проблему.
char eol[3];
eol[0] = '\r';
eol[1]= '\n';
eol[2] = '\0';
string crlf = string(eol);
string endit(crlf + '.' + crlf);
send(socket_id, endit.c_str(), endit.length(), 0) < 0);