Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.05.2008, 20:02
Sanek_ntsk Sanek_ntsk вне форума
Новичок
 
Регистрация: 02.09.2007
Сообщения: 55
Репутация: 10
По умолчанию Письмо

Как отправить письмо на электронную почту?
Ответить с цитированием
  #2  
Старый 23.05.2008, 20:44
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Смотря что тебе надо:
1. Из клиента:
а) просто ShellExecute(...,PChar('mailto:address@server.ru') ,...);
б) сформировав тело, прицепив файлы и т.д. - SimpleMAPI
2. Полностью сам - качай демо по Indy (www.indyproject.org) с прямой доставкой или просто SMTP и вперед.
Ответить с цитированием
  #3  
Старый 23.05.2008, 21:59
Sanek_ntsk Sanek_ntsk вне форума
Новичок
 
Регистрация: 02.09.2007
Сообщения: 55
Репутация: 10
По умолчанию

есть код:
Цитата:
procedure TForm1.Button1Click(Sender: TObject);
begin
IdSMTP1.Host:='win.mail.ru';
IdSMTP1.Username:='sanek-ntsk';
IdSMTP1.Connect;
if IdSMTP1.Connected=true then
label4.Caption:='Соединено';
end;
Но почему то после нажатия кнопки прога зависает секунд на 10 и потом вылазиет ошибка
Ответить с цитированием
  #4  
Старый 23.05.2008, 22:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну а сам ты как думаешь?
Ты уверен, что по этому адресу вообще есть почтовый сервер?
Не считая того, что некоторые СМТП требуют авторизации.

Но скорее всего у тебя вылетает Time Out, т.е. по этому адресу нету почтового сервера или он живет на нестандартном порту.
Ответить с цитированием
  #5  
Старый 23.05.2008, 22:08
Sanek_ntsk Sanek_ntsk вне форума
Новичок
 
Регистрация: 02.09.2007
Сообщения: 55
Репутация: 10
По умолчанию

ну что мне тогда надо писать в хосте, если у меня почта на мейле?
Ответить с цитированием
  #6  
Старый 23.05.2008, 22:44
Ozerich Ozerich вне форума
Новичок
 
Регистрация: 11.04.2008
Адрес: В городе-герой Минск
Сообщения: 69
Репутация: 10
По умолчанию

smtp.mail.ru
Ответить с цитированием
  #7  
Старый 24.05.2008, 10:57
Sanek_ntsk Sanek_ntsk вне форума
Новичок
 
Регистрация: 02.09.2007
Сообщения: 55
Репутация: 10
По умолчанию

Ещё один вопрос. в delphiworld нашёл статью, там код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with NMSMTP1 do
  begin
    Host := 'smtp.mailserver.com';
    UserID := '___Nikolay';
    Connect;

    PostMessage.FromAddress := 'DelphiWorld@mail.ru';
    PostMessage.ToAddress.Text := 'bestprogramming@mail.ru';
    PostMessage.Body.Text := 'Текст письма';
    PostMessage.Subject := 'Тема письма';
    SendMail;
  end;
end;
Я нашёл этот компонент, ввёл данные в поле host и user, запускаю - всё нормально. Но почему то когда я хочу написать код для отправки (NMSMTP1.PostMessage.FromAddress, NMSMTP1.PostMessage.ToAddress.Text и т.д.) у меня не вылазиет слово PostMessage. Если что, то у меня делфи 2007, компонент IdSMTP.
Вот картинка
http://avoreg.ru/v.php?id=da52f99ca4...f7230beae62953

Последний раз редактировалось Admin, 24.05.2008 в 21:12.
Ответить с цитированием
  #8  
Старый 24.05.2008, 11:21
Ozerich Ozerich вне форума
Новичок
 
Регистрация: 11.04.2008
Адрес: В городе-герой Минск
Сообщения: 69
Репутация: 10
По умолчанию

Ну пусть не вылазит.
Вводи просто без подсказок.а если после запуска выдаст ошибку что не знает PostMessage то компонент левый
Ответить с цитированием
  #9  
Старый 24.05.2008, 12:11
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Да вы что можно проще..

Цитата:
procedure TForm1.Button1Click(Sender: TObject);
begin
IdSMTP1.Host:='win.mail.ru';
IdSMTP1.Username:='sanek-ntsk';
IdSMTP1.Connect;
if IdSMTP1.Connected=true then
label4.Caption:='Соединено';
end;

так как сервер требует авторизации укажи еще и пароль к пользователю. И еще тело сообщения и тема тоже нужны)
Ответить с цитированием
  #10  
Старый 24.05.2008, 16:33
Sanek_ntsk Sanek_ntsk вне форума
Новичок
 
Регистрация: 02.09.2007
Сообщения: 55
Репутация: 10
По умолчанию

В Delphi 7 и 2007 писал от руки:
Цитата:
IdSMTP1.postmessage...
при компиляции и в 7 и в 2007 версиях выдаёт ошибку о том, что не знает этих слов.
Ответить с цитированием
  #11  
Старый 24.05.2008, 16:43
Sanek_ntsk Sanek_ntsk вне форума
Новичок
 
Регистрация: 02.09.2007
Сообщения: 55
Репутация: 10
По умолчанию

ещё пробовал вот так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
host:='smtp.'+combobox1.Text;
from:=edit1.Text+'@'+combobox1.Text;
if IdSMTP1.Connected=true then
   IdSMTP1.Disconnect;
   IdSMTP1.Host:=host;
   IdSMTP1.Username:=edit1.Text;
   IdSMTP1.Password:=edit2.Text;
   IdSMTP1.Connect;
   if IdSMTP1.Connected then begin
      label4.Caption:='Состояние: Готово';
      edit3.Enabled:=true;
      edit4.Enabled:=true;
      memo1.Enabled:=true;
      label5.Enabled:=true;
      label6.Enabled:=true;
      label7.Enabled:=true;
      button2.Enabled:=true;
   end
   else
      label4.Caption:='Состояние: Ошибка';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
IdSMTP1.QuickSend(host,edit4.Text,edit3.Text,from,memo1.Text);
end;
но после нажатия кнопки2 выдаётся ошибка, а авторизация проходит успешно

Последний раз редактировалось Admin, 24.05.2008 в 21:11.
Ответить с цитированием
  #12  
Старый 24.05.2008, 16:43
Ozerich Ozerich вне форума
Новичок
 
Регистрация: 11.04.2008
Адрес: В городе-герой Минск
Сообщения: 69
Репутация: 10
По умолчанию

значит такого метода нет в компоненте.Поищи другие методы для отправки почты.
Ответить с цитированием
  #13  
Старый 24.05.2008, 16:47
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

SMTP.Send(Msg)

Msg - компонент сообщения
Ответить с цитированием
  #14  
Старый 24.05.2008, 18:17
Sanek_ntsk Sanek_ntsk вне форума
Новичок
 
Регистрация: 02.09.2007
Сообщения: 55
Репутация: 10
По умолчанию

Разобрался. Теперь возник ещё пара вопросов. Вот код
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
if IdSMTP1.Connected then
   IdSMTP1.Disconnect;
   IdSMTP1.Host:='smtp.'+combobox1.Text;
   IdSMTP1.Username:=edit1.Text;
   IdSMTP1.Password:=edit2.Text;
   IdSMTP1.Connect;
   if IdSMTP1.Authenticate=true then begin
      label4.Caption:='Состояние: Готово';
      edit3.Enabled:=true;
      edit4.Enabled:=true;
      memo1.Enabled:=true;
      label5.Enabled:=true;
      label6.Enabled:=true;
      label7.Enabled:=true;
      button2.Enabled:=true;
   end
   else
      label4.Caption:='Ошибка в логине или в пароле';
end;
1. Почему при неправильном вводе логине или пароле вылазиет ошибка, а не label4.Caption:='Ошибка в логине или в пароле'?
2. После первой авторизации второй раз авторизироваться нельзя. Почему?
Помогите пожалуйста. Заранее спасибо.

Последний раз редактировалось Admin, 24.05.2008 в 21:11.
Ответить с цитированием
  #15  
Старый 24.05.2008, 19:21
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
if IdSMTP1.Connected then
 begin
 IdSMTP1.Disconnect;
 IdSMTP1.Host:='smtp.'+combobox1.Text;
 IdSMTP1.Username:=edit1.Text;
 IdSMTP1.Password:=edit2.Text;
 IdSMTP1.Connect;
 if IdSMTP1.Authenticate=true then begin
 begin
  label4.Caption:='Состояние: Готово';
  edit3.Enabled:=true;
  edit4.Enabled:=true;
  memo1.Enabled:=true;
  label5.Enabled:=true;
  label6.Enabled:=true;
  label7.Enabled:=true;
  button2.Enabled:=true;
 end
 else
 label4.caption:='Состояни: НеГотово';
end
else
label4.Caption:='Ошибка в логине или в пароле';
end;

Вот так попробуй, хотя я писал прямо здесь, могу и ошибаться
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:28.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025