Russian Qt Forum

Qt => Работа с сетью => Тема начата: Buller от Май 26, 2012, 13:54



Название: [РЕШЕНО] Проблема с отправлением почты
Отправлено: Buller от Май 26, 2012, 13:54
День добрый, ув. форумчане.

Решил в образовательных целях написать маленький сендер: отправка сообщения на имейл по щелчку мыши.
Скачал для сих целей Class for sending email (http://qt-apps.org/content/show.php?content=140925)
Класс работает безупречно, что непременно радует.
Сделал форму в Дизайнере, и кнопку, по нажатию на которой будет слаться сообщение. Код сендинга из main.cpp перенес в обработчик кнопки:
Код:
void form::on_pushButton_pressed()
{
        SmtpAuthData smtpAuthData;
        SmtpAuthData::Data data;
        // your email address
        data.email = "От кого";
        // login for your email account
        data.login = "Логин";
        // name which will be shown in From: line(optional)
        //data.name = QString::fromLocal8Bit("");
        // password for auth on email account
        data.password = "Пароль";
        // port for host 587 default
        //data.port = "";
        // ssl support
        //data.enableSsl = true;
        smtpAuthData.rewriteData(data);

        Letter letter(smtpAuthData);

        QString secondFile("");

        QStringList filesList;
        filesList << secondFile;


        QString receivers = QString::fromLocal8Bit("Кому");
        //QString blindCopyReceivers = "";
        // choice letter encoding
        //letter.set_encoding("");
        letter.set_receivers(receivers);
        //letter.set_blindCopyReceivers(blindCopyReceivers);
        //letter.set_subject(QString::fromLocal8Bit(""));
        //letter.set_attachement(filesList);
        letter.set_text(QString::fromLocal8Bit("Проверка"));

        // send letter
        letter.send();
}

Приложение нормально компилируется, никаких ошибок, просто сообщение перестало отправляться.
Точнее сказать, в работающем варианте вывод такой:
Код:
Email at ->  "От кого" 
Ready read ->  31
Block size ->  31
Server request ->  "220 smtp9.mail.ru ESMTP ready
"
Ready read ->  88
Block size ->  88
Server request ->  "250 STARTTLS
"
Ready read ->  18
Block size ->  18
Server request ->  "334 VXNlcm5hbWU6
"
Ready read ->  18
Block size ->  18
Server request ->  "334 UGFzc3dvcmQ6
"
Ready read ->  30
Block size ->  30
391
Server request ->  "235 Authentication succeeded
"
Ready read ->  8
Block size ->  8
Emails to ->  "Кому"
Server request ->  "250 OK
"
Ready read ->  14
Block size ->  8
Server request ->  "250 Accepted
"
Ready read ->  56
Block size ->  56
Server request ->  "354 Enter message, ending with "." on a line by itself
"
Ready read ->  28
Block size ->  28
Server request ->  "250 OK id=1SYEZa-0001Ad-Sr
"

А в окончательном такой:
Код:
Email at ->  "От кого" 
Как починить?


Название: Re: Проблема с отправлением почты
Отправлено: kambala от Май 26, 2012, 15:51
может из-за того, что твои переменные уничтожаются, поскольку созданы на стеке, а не в куче?


Название: Re: Проблема с отправлением почты
Отправлено: Buller от Май 27, 2012, 12:45
может из-за того, что твои переменные уничтожаются, поскольку созданы на стеке, а не в куче?

Как исправить?
Мой текущий уровень знания языка не позволяет это сделать самостоятельно.


Название: Re: Проблема с отправлением почты
Отправлено: Bepec от Май 27, 2012, 15:40
Создавать с помощью new? Сделать полем класса?


Название: Re: Проблема с отправлением почты
Отправлено: Buller от Май 29, 2012, 08:07
Создавать с помощью new? Сделать полем класса?

Не мог бы ты мне помочь с моим примером кода? Попробывал с помощью new, не получилось.


Название: Re: Проблема с отправлением почты
Отправлено: Bepec от Май 29, 2012, 09:11
Если выложишь свой проект (или минимально компилируемый, чтоб запускалося) - тогда да. Посмотрю ошибки, подскажу.

А писать свой с 0 - извини, у меня времени на это не особо ;)


Название: Re: Проблема с отправлением почты
Отправлено: Buller от Май 29, 2012, 10:40
Если выложишь свой проект (или минимально компилируемый, чтоб запускалося) - тогда да. Посмотрю ошибки, подскажу.

А писать свой с 0 - извини, у меня времени на это не особо ;)

Понимаю, спасибо) Как будет свободное время, вот мой проект (http://zalil.ru/33333579).


Название: Re: Проблема с отправлением почты
Отправлено: Bepec от Май 29, 2012, 10:50
Взял. После обеда посмотрю. Т.е. часа через полтора отвечу ;)

update:

Боги, ЗА ЧТОООО???? Ты ещё скажи, что это у тебя хотя бы не вываливается в ассерты? :)


1) QSettings - Необходимо ему указывать блин параметры, а то у тебя тупо куда-то в пустоту пишется и из пустоты что-то считывается!
2)
Код:
char *email = mail.toAscii().data(); 
что ты этим хотел сказать???

update:

Полностью неработоспособный проект... Полностью неработоспособная программа... Что сказать - ничего не скажу.


PS или ты мне сунул неработоспособный проект, да? И не проверил, да? Или же я ошибаюсь? *умиротворённый*


Название: Re: Проблема с отправлением почты
Отправлено: kambala от Май 29, 2012, 14:15
если для создания QSettings использовать конструктор по умолчанию (полагаю в проекте именно так, я его не качал), то открывается доступ к вполне определённому месту, в документации это описано.


Название: Re: Проблема с отправлением почты
Отправлено: Bepec от Май 29, 2012, 14:24
Ошибаешься.

Цитировать
If QCoreApplication::setOrganizationName() and QCoreApplication::setApplicationName() has not been previously called, the QSettings object will not be able to read or write any settings, and status() will return AccessError.

Собственно ты прав - там вызван конструктор по умолчанию. И соответственно вместо записанных значений он возвращал NULL.


Название: Re: Проблема с отправлением почты
Отправлено: kambala от Май 29, 2012, 14:35
именно задание названия приложения и/или организации я и подразумевал :) плохо, что это не все делают.


Название: Re: Проблема с отправлением почты
Отправлено: Bepec от Май 29, 2012, 14:36
Я это не делаю. Ибо по-моему это излишне. Версия/название программы - это ещё ладно, а вот название организации и прочая - излишня ;)


Название: Re: Проблема с отправлением почты
Отправлено: Buller от Май 29, 2012, 18:25
Полностью неработоспособный проект... Полностью неработоспособная программа... Что сказать - ничего не скажу.

Исправил (http://zalil.ru/upload/33337482). Не работает. Жду новой критики.


Название: Re: Проблема с отправлением почты
Отправлено: Bepec от Май 29, 2012, 18:45
Кхм. Благовоспитанные люди за такое обычно извиняются :) Ну да не мне вас судить.


Название: Re: Проблема с отправлением почты
Отправлено: Buller от Май 30, 2012, 09:45
Вы правы. Но я вынужден просить вас проявить благосклонность по отношению ко мне и помочь, если это вас не затруднит.
P.S. Что делать, если Qt в упор не видит ui_mainwindow.h, который лежит в этом же каталоге?


Название: Re: Проблема с отправлением почты
Отправлено: Bepec от Май 30, 2012, 10:57
Блин, уважаемый. Я конечно понимаю - новичок и всё такое :) Но зачем в архив сувать отдельные файлы. mainwindow.ui там нету.

Я незнаю, как вы так смогли. Возможно вы программируете по *nix'ами, но ваши проекты у меня в упор не работают :D

Тот же QSettings с вашими параметрами в вашем проекте файл не создаёт. Ни в какую. Даже не чешется.

PS Можете кстати не особо парится. Ваш ещё первый проект я допилил ещё вчера. Посмотрел на класс отсылки и ммм... - он пишет что письмо отправлено, но отправки не происходит. Почему? Проблема в этом самом классе. Как решить? Незнаю, я smtp не изучал глубоко.


Название: Re: Проблема с отправлением почты
Отправлено: Buller от Май 30, 2012, 11:24
mainwindow.ui был удален неизвестным образом из проекта, моя вина.
Да, вообще писал под Линукс.

Цитировать
Почему? Проблема в этом самом классе.
Теперь моя душа спокойна т.к. уже намучился с ним.

Bepec, большое Тебе спасибо за помощь и терпение, не болей)


Название: Re: Проблема с отправлением почты
Отправлено: Bepec от Май 30, 2012, 11:51
На здоровье. Спасибо за пожелание.
Обращайтесь, ноооо... Но пожааааалуйста не надо таких проектов выкладывать, полунеживых :D Нервы беречь всем надо.


Название: Re: Проблема с отправлением почты
Отправлено: Buller от Май 30, 2012, 11:52
Хорошо :) Учту в будущем


Название: Re: Проблема с отправлением почты
Отправлено: Bepec от Май 30, 2012, 11:58
И загляни в кладовую готовых решений. Там вроде был нормально и стабильно работающий класс для отправки почты.
Тем более, что и автора вроде выцепить можно.


Название: Re: Проблема с отправлением почты
Отправлено: Buller от Май 30, 2012, 12:03
Спасибо, посмотрю.

UPD:

Нашёл, заработало :)


Название: Re: Проблема с отправлением почты
Отправлено: Bepec от Май 30, 2012, 18:26
В заголовке темы измени на "название темы"[РЕШЕНО].