С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lazarus
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/23: Рейтинг темы: голосов - 23, средняя оценка - 4.57
Farrewa
28 / 28 / 22
Регистрация: 27.12.2013
Сообщений: 368
1

Отправка письма на почту

06.01.2014, 18:06. Просмотров 4437. Ответов 51
Метки нет (Все метки)

Задача непростая:
Дано Memo1 и Две кнопки ( любых )

Задача такая:
пишем в Memo1 текст, например "Привет мир", жмем на одну кнопку и наше сообщение отправляется на почту. Не обязательно использовать Memo, можно и Edit. Можно и вообще не использовать ничего. Только две кнопки.

Нажав на другую кнопку, приложение закрывается.

У меня проблема именно с отправкой на почту. Я ничего не помню об этом. Помню что нужно дополнительно что-то устанавливать. И к проекту еще одну библиотеку подключать. Дальше в Uses включать и т.д.

Прошу помочь мне. Объясните что и как. Как обычно в учебнике это вообще не упомянуто . Хоть это и не обязательное задание, но мне самому очень интересно разобраться в этом.

P.S. UI помоги
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2014, 18:06
Ответы с готовыми решениями:

Отправка письма Lotus из Delphi
Добрый день ув.форумчане. Подскажите можно ли отправлять письмо по лотусу из...

Отправка письма php. Письма со скрипта на локальном сервере (Denwer) не приходят на почту.
Доброго Времени Суток!!! Я запускаю Денвером php скрипт со следующим кодом ...

Отправка на почту письма
ребята нужен скрипт для отправки письма на почту. всего 2 поля для...

Отправка на почту письма
Мне нужно, чтобы программа отправляла письмо мне на почту, пытаюсь сделать так:...

Отправка письма на почту
как реализовать? Перелазил инет половина не работает) Помогите плз!

51
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26529 / 17817 / 7049
Регистрация: 22.10.2011
Сообщений: 31,365
Записей в блоге: 6
06.01.2014, 18:12 2
Цитата Сообщение от Farrewa Посмотреть сообщение
UI помоги
А чего я-то? Я не один на форуме...

Устанавливай библиотеку Indy (последнюю версию бери здесь: http://indy.fulgan.com/ZIP/), и потом уже отсылай письма на почту. Дельфийские примеры, каких в сети (и на этом форуме в частности) море, должны собираться и в Лазарусе.
1
Farrewa
28 / 28 / 22
Регистрация: 27.12.2013
Сообщений: 368
06.01.2014, 21:54  [ТС] 3
Цитата Сообщение от UI Посмотреть сообщение
А чего я-то? Я не один на форуме...
Пока мне помогаешь только ты

Устанавливать как, вот в чем еще вопрос. Я никогда раньше этим не занимался. А что объясняли уже забыл.

Добавлено через 54 секунды
вроде как папка Lib одна нужна?
0
Farrewa
28 / 28 / 22
Регистрация: 27.12.2013
Сообщений: 368
06.01.2014, 22:22  [ТС] 4
такс инди я установил вроде как... нашел инструкцию:
Кликните здесь для просмотра всего текста
1. Качаем последнюю версию Indy (Indy10_5018.zip)
2. Распакуем в любую папку (например indy)
3. Копируем все файлы *.pas, *.lrs, *.inc из папок \Lib\System, \Lib\Core, \Lib\Protocols, в любую другую папку. (copy_indy)
4. Копируем файл indylaz.lpk из \Lib в папку copy_indy
5. Открываем Lazarus -> Пакет -> Открыть файл пакета (.lpk) -> Выбираем indylaz.lpk
6. Устанавливаем


Я так понял это значит что инди установилось ( оповещение в окне "сообщения" тоже было )
Кликните здесь для просмотра всего текста
Отправка письма на почту
0
Farrewa
28 / 28 / 22
Регистрация: 27.12.2013
Сообщений: 368
06.01.2014, 22:37  [ТС] 5
ааа блин... UI объясни ты мне на примере... Позязя... Очень прошу. Я нихрена не нашел внятного в инете.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26529 / 17817 / 7049
Регистрация: 22.10.2011
Сообщений: 31,365
Записей в блоге: 6
06.01.2014, 22:54 6
Цитата Сообщение от Farrewa Посмотреть сообщение
Я так понял это значит что инди установилось
Когда Indy установится - ты это обязательно увидишь, там столько дополнительных вкладок появится...

Но перед установкой надо в файле \lazarus\fpc\2.6.0\bin\i386-win32\fpc.cfg прописать пути к пакетам Indy: после строки \lazarus\fpc\$FPCVERSION/units/$fpctarget/rtl добавить полные пути к папкам
XML
1
2
3
-FuD:\lazarus\components\Indy10_4910\Lib\Core\
-FuD:\lazarus\components\Indy10_4910\Lib\System\
-FuD:\lazarus\components\Indy10_4910\Lib\Protocols\
(поменяешь пути на свои), и потом уже устанавливать пакет в обычном порядке, открывая LPK и пересобирая Lazarus...

И, кстати, Indy-компоненты не лежат на вкладке IPro, они на вкладках с названиями, начинающимися на Indy...
Цитата Сообщение от Farrewa Посмотреть сообщение
не нашел внятного в инете
Чего не нашел? Примера отсылки письма на почту? Хм. А это что: http://www.cyberforum.ru/delphi-begi...ml#post4142382 ?
1
Farrewa
28 / 28 / 22
Регистрация: 27.12.2013
Сообщений: 368
06.01.2014, 23:03  [ТС] 7

1) что нужно включать в Uses?
2) можно пример попроще? для отправки писем без вложений... простого текста, типо "хай ворлд"?
3) можно мне прямые руки? (шучу)
0
Farrewa
28 / 28 / 22
Регистрация: 27.12.2013
Сообщений: 368
07.01.2014, 00:35  [ТС] 8
@#!&! Можете дать нормальную инструкцию? Пожалуйста!
В интернете 50 сайтов и на каждом написано по разному!
Вот результат:
Кликните здесь для просмотра всего текста
Отправка письма на почту

Напишите пожалуйста как устанавливать библиотеку Indy. Я это делаю первый раз и мало что соображаю.
0
Farrewa
28 / 28 / 22
Регистрация: 27.12.2013
Сообщений: 368
07.01.2014, 00:40  [ТС] 9
Вот мой fpc.cfg

Кликните здесь для просмотра всего текста
Отправка письма на почту
0
Farrewa
28 / 28 / 22
Регистрация: 27.12.2013
Сообщений: 368
07.01.2014, 00:41  [ТС] 10
Путь к папке с Indy:
C:\lazarus\components\Indy
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26529 / 17817 / 7049
Регистрация: 22.10.2011
Сообщений: 31,365
Записей в блоге: 6
07.01.2014, 00:46 11
Farrewa
1) кладешь на форму компоненты: TIdSMTP, TIdSSLIOHandlerSocketOpenSSL и TIdMessage
2) настраиваешь TIdSSLIOHandlerSocketOpenSSL: в SSL Options - Method изменяешь значение на sslvSSLv3
3) в папку с EXE-шником кладешь 2 файла: libeay32.dll и ssleay32.dll, взятые (чем новее - тем лучше) вот отсюда: http://indy.fulgan.com/SSL/
4) пишешь вот такой обработчик нажатия кнопки:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// ...
uses IdText, IdExplicitTLSClientServerBase;
 
{$R *.lfm}
 
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
  // imgpart : TIdAttachmentFile;
  txtpart, htmpart : TIdText;
begin
  IdSMTP1.Host := 'smtp.gmail.com'; // проверял через gmail
  IdSMTP1.Port := 465;
  IdSMTP1.Username := e_From_Name; // тут - полный username (у меня - включая @gmail.com)
  IdSMTP1.Password := e_From_Pass; // тут - пароль
  IdSMTP1.UseTLS := utUseImplicitTLS;
  IdSMTP1.AuthType:=satDefault;
 
  IdMessage1.Clear();
  IdMessage1.From.Address:=e_From_Adress;
  IdMessage1.Recipients.EMailAddresses := UserEmail; // на какой адрес выслать сообщение
  IdMessage1.Subject:='Just a test';
  IdMessage1.ContentType := 'multipart/alternative';
 
  txtpart := TIdText.Create(IdMessage1.MessageParts);
  txtpart.ContentType := 'text/plain';
 
  txtpart := TIdText.Create(IdMessage1.MessageParts);
  txtpart.ContentType := 'multipart/related; type="text/html"';
 
  htmpart := TIdText.Create(IdMessage1.MessageParts, nil);
  htmpart.ContentType := 'text/html; charset=UTF-8'; // Не забываем кодировку!!! Иначе получишь вопросики
  htmpart.Body.Add('<html>');
  htmpart.Body.Add('<head>');
  htmpart.Body.Add('</head>');
  htmpart.Body.Add('<body><h1>Заголовок</h1>');
  htmpart.Body.Add(Memo1.Text + '</body>');
  htmpart.Body.Add('</html>');
  htmpart.ParentPart := 1;
 
  IdSMTP1.Connect();
  IdSMTP1.Send(Form1.IdMessage1);
  IdSMTP1.Disconnect();
end;
Только что у меня это прекрасно отправило сообщение на почту (да, Lazarus 1.0.14 + последний, только что скачанный и установленный Indy)...
1
Farrewa
28 / 28 / 22
Регистрация: 27.12.2013
Сообщений: 368
07.01.2014, 00:47  [ТС] 12
после часа пыток, удалось получить лишь:

Кликните здесь для просмотра всего текста
Отправка письма на почту



Помогите пожалуйста...
0
Farrewa
28 / 28 / 22
Регистрация: 27.12.2013
Сообщений: 368
07.01.2014, 00:50  [ТС] 13
Я не могу установить инди, блин! Как установить пошагово можешь рассказать, пожалуйста!

Добавлено через 1 минуту
Или на крайний случай можешь запаковать свой Lazarus в архив и скинуть?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26529 / 17817 / 7049
Регистрация: 22.10.2011
Сообщений: 31,365
Записей в блоге: 6
07.01.2014, 00:56 14
Об установке Indy: в CFG-файле строку
Bash
1
-FuC:\lazarus\fpc\$FPCVERSION/units/$fpctarget/rtl
заменяешь на
Bash
1
2
3
4
5
6
-FuС:\lazarus\fpc\$FPCVERSION/units/$fpctarget/rtl
 
-FuC:\lazarus\components\Indy\Lib\
-FuC:\lazarus\components\Indy\Lib\Core\
-FuC:\lazarus\components\Indy\Lib\System\
-FuC:\lazarus\components\Indy\Lib\Protocols\
, перезапускаешь Лазарус, открываешь файл (File - Open) с именем C:\lazarus\components\Indy\Lib\indylaz.lpk, и устанавливаешь его (кнопка Use -> Install в открывшемся окне). Лазарус затребует свою пересборку, соглашаешься, ждешь пару минут, пока соберется Indy и перекомпилируется Лазарус, потом он перезапустится и ты сможешь наконец начать работать с Indy...
2
Farrewa
28 / 28 / 22
Регистрация: 27.12.2013
Сообщений: 368
07.01.2014, 01:43  [ТС] 15
Отлично! Спасиб UI, жалко незнаю твоего настоящего имени, спасибо. Вот так бы сразу... Все установилось... Появилась куча вкладок и Indy в точ числе.

Добавлено через 7 минут
в SSL Options - Method изменяешь значение на sslvSSLv3
SSL Options - Method я найти не могу...

Добавлено через 31 секунду
я этот пункт не понял

Добавлено через 1 минуту
поподробнее пожалуйста
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26529 / 17817 / 7049
Регистрация: 22.10.2011
Сообщений: 31,365
Записей в блоге: 6
07.01.2014, 02:06 16

Не по теме:

Цитата Сообщение от Farrewa Посмотреть сообщение
жалко незнаю твоего настоящего имени
Вообще-то в профиле написано :)


Цитата Сообщение от Farrewa Посмотреть сообщение
SSL Options - Method я найти не могу...
Как это так?
2
Миниатюры
Отправка письма на почту  
Farrewa
28 / 28 / 22
Регистрация: 27.12.2013
Сообщений: 368
07.01.2014, 12:07  [ТС] 17
хах, я просто то окошко немного за пределы экрана вынес и не видел той маленькой "стрелочки".

У меня опять новая проблема, при нажатии на кнопку:
Кликните здесь для просмотра всего текста
Отправка письма на почту


Мой код:
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
procedure TForm1.Button1Click(Sender: TObject);
var
  // imgpart : TIdAttachmentFile;
  txtpart, htmpart : TIdText;
begin
  IdSMTP1.Host := 'smtp.gmail.com'; // проверял через gmail
  IdSMTP1.Port := 465;
  IdSMTP1.Username := 'Farrewa906@gmail.com'; // тут - полный username (у меня - включая @gmail.com)
  IdSMTP1.Password := 'пароль'; // тут - пароль
  IdSMTP1.UseTLS := utUseImplicitTLS;
  IdSMTP1.AuthType:=satDefault;
 
  IdMessage1.Clear();
  IdMessage1.From.Address:= '????'; // тут адрес какой нужно?
  IdMessage1.Recipients.EMailAddresses := 'Farrewa906@yandex.ru'; // на какой адрес выслать сообщение
  IdMessage1.Subject:='Just a test';
  IdMessage1.ContentType := 'multipart/alternative';
 
  txtpart := TIdText.Create(IdMessage1.MessageParts);
  txtpart.ContentType := 'text/plain';
 
  txtpart := TIdText.Create(IdMessage1.MessageParts);
  txtpart.ContentType := 'multipart/related; type="text/html"';
 
  htmpart := TIdText.Create(IdMessage1.MessageParts, nil);
  htmpart.ContentType := 'text/html; charset=UTF-8'; // Не забываем кодировку!!! Иначе получишь вопросики
  htmpart.Body.Add('<html>');
  htmpart.Body.Add('<head>');
  htmpart.Body.Add('</head>');
  htmpart.Body.Add('<body><h1>Заголовок</h1>');
  htmpart.Body.Add(Memo1.Text + '</body>');
  htmpart.Body.Add('</html>');
  htmpart.ParentPart := 1;
 
  IdSMTP1.Connect();
  IdSMTP1.Send(Form1.IdMessage1);
  IdSMTP1.Disconnect();
end;



что не пробовал, появляется "исключение"

На форме есть и кнопка и нужные компоненты и Memo в том числе, те два файла тоже есть. Проект сохранен в папку.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26529 / 17817 / 7049
Регистрация: 22.10.2011
Сообщений: 31,365
Записей в блоге: 6
07.01.2014, 13:09 18
А, да... Забыл совсем добавить, что надо связать TIdSMTP и TIdSSLIOHandlerSocketOpenSSL: в инспекторе объектов в свойстве IdSMTP1.IOHandler выбери IdSSLIOHandlerSocketOpenSSL1. По-моему, это - все что осталось сделать...
1
Farrewa
28 / 28 / 22
Регистрация: 27.12.2013
Сообщений: 368
07.01.2014, 13:15  [ТС] 19
Не одно, так другое... сделал - не помогло.
Кликните здесь для просмотра всего текста
Отправка письма на почту
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26529 / 17817 / 7049
Регистрация: 22.10.2011
Сообщений: 31,365
Записей в блоге: 6
07.01.2014, 13:38 20
Значит, libeay32.dll и ssleay32.dll лежат не там, где нужно, не рядом с EXE. Или версия не та (скажем, скачал 32-битную, а система 64-битная). Попробуй запустить просто отдельно EXE-шник, не через Лазарус, а из Эксплорера, какое сообщение получишь? То же самое?

Добавлено через 1 минуту
P.S. Port лучше на 465 переключить еще в Инспекторе, может быть и отсюда глюк...

Если что - вот проект (вместе с EXE-шником и DLL-ками), который только что отправил почту через указанный SMTP-сервер (впиши свои данные и адрес получателя и нажми "Отправить". Если у твоей почты, через которую уходит сообщение, другой SMTP-сервер - замени его на нужный и пересобери проект. И проверь настройки порта, возможно, нужный тебе SMTP-сервер требует другой порт. smtp.gmail.com работает через 465-ый)
2
Вложения
Тип файла: 7z post_mail.7z (1.18 Мб, 61 просмотров)
07.01.2014, 13:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2014, 13:38

Отправка письма на почту
Возможно ли в батнике прописать так чтобы отправлял, допустим на...

Отправка письма на почту
Возможно ли в VBS прописать так чтобы отправлял, допустим на tr-001@mail.ru,...

Отправка письма на почту
Добрый день! Написал код: try { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru