Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Отпрвка почты idSMTP помогите разобраться


Автор: fuckerok 18.11.2004, 07:08
Вот недовно решил написать отправку почты, раньше подобным делом занимался, но опыта маловато. Вот процедура отправки почты, которая к моему удивлению раньше работала..
Код

procedure send;
var
M: TIdMessage;
begin

M:=TIdMessage.Create(Form1);
m.Body.Add('Текст');

m.From.Text:='[email protected]'; //от кого адресс
m.Recipients.Add;
m.Recipients.Items[0].Text:='[email protected]';  //куда
m.Subject:='тема';  

form1.IdSMTP1.Host:='smtp.mail.ru';// сервер
form1.IdSMTP1.Username:='root';// Логин   root есть всегда (:
form1.IdSMTP1.Connect();
if form1.IdSMTP1.Connected then
 begin
    form1.IdSMTP1.Send(m);
    form1.IdSMTP1.Disconnect;
end;

end;

Помагите разобраться, в чём проблема? Иль опять руки кривые (=

модератор переименнуй тему, я мочты вместо почты написал

Автор: Snowy 18.11.2004, 13:31
Код

 IdSMTP1.Host:='smtp.mail.ru';
 try
   IdSMTP1.Connect(30000); //Подключиться
 except
   // Обход ошибки некоррекного соединения
 end;
 if IdSMTP1.Connected then //Если получилось - отправляем
 begin
   msg:=TIdMessage.Create(IdSMTP1);
   msg.Subject:='subj';
   msg.Recipients.EMailAddresses:='[email protected]';
   msg.From.Address:='[email protected]';
   msg.From.Name:='Vasya Pupkin';
   msg.Body.Add('Text');
   IdSMTP1.Send(msg);
   ShowMessage('Письмо отправлено');
 end
 else //Если не получилось, то ругаемся
   ShowMessage('Невозможно установить соединение с сервером!');


Автор: fuckerok 19.11.2004, 07:50
А мой код работает у кого нибудь? Ведь у меня работал раньше, просто я думаю это из-за моего провайдера. smile
Через SMTP сервер провайдера вроде всёв работает, а чере сервер майла не хочет.... smile

Автор: Snowy 19.11.2004, 12:46
Значит адрес from не существует на сервере майла. Адреса, которых нету в списке пользователей майлом не принимаются - антиспам, понимаешь... Пробуй другие адреса from или другой smtp сервер.

Автор: fuckerok 20.11.2004, 07:04
Менаю from На свой эфект такой же.... Кусок данных отправляеться, а потом ошибка вылитает....

Самое интересное в том, что раньше всё работалл, да и сейчас всё работает через SMTP сервер моего провайдера... А через Mail.Ru не хочет...
Ну а мой код у кого нить сработал, мне просто интересно узнать.... Если да, то я к провайдеру в кантору с ружьём.. smile

Автор: Snowy 26.11.2004, 10:47
C майл ру сейчас не так просто бороться. Там понаставили фильтров на все, что только можно. Мой код, например полностью рабочий, но на майл ру не шлет. Коннект есть. Отправляет заголовок, а майлру ему и говорит человеческим голосом "да вы, батенька, спамер!" И отправляет гоутунафиг. Берем в руки яндекс почту, переписываем код под smtp аутентификацию и все работает. Главное, чтобы адрес фром совпадал. Но есть ведь еще и имя отправителя и реплиту. А с майлру можно долго долбиться и ничего не выйдет. Перебирать все варианты долго. Он может проверять все, вплоть до имени почтового агента. Побороться с ним конечно можно попробовать, но нужно ли это?
P.S. спамеры все равно шлют почту не через релэй а напрямую по DNS записям.

Автор: n0ns3ns3 6.12.2004, 00:30
вот мой код, работает и на mail.ru
Код


//отправка письма
procedure MailSend;
begin

 //Настройка SMTP
 SMTP.Host := 'smtp.mail.ru';
 SMTP.Port := 25;

 //Настройка сообщения (MailMessage)
 MailMessage.From.Text := '[email protected]';
 MailMessage.Recipients.EMailAddresses := '[email protected]';

 MailMessage.Subject := 'сабж';
 MailMessage.Body.Text := 'bla bla bla =)';

 //отправка почты
 try
   try
     SMTP.Connect(100000);
     SMTP.Send(MailMessage);
   except on E:Exception do
     begin
       StatusRichEdit.Lines.Insert(0, 'ОШИБКА: ' + E.Message); //вывод ошибки в RichEdit
     end;
   end;
 finally
   if SMTP.Connected then SMTP.Disconnect;
 end;
end;


Автор: fuckerok 9.12.2004, 08:12
n0ns3ns3
А MailMessage чЕМУ ПРИСВОИТЬ?
Что-то я тормозю smile

И что такое сабж? Всё понять не могу smile

Автор: n0ns3ns3 10.12.2004, 13:37
Цитата(fuckerok @ 9.12.2004, 08:12)
n0ns3ns3
А MailMessage чЕМУ ПРИСВОИТЬ?
Что-то я тормозю  smile

И что такое сабж? Всё понять не могу  smile

MailMessage - это структура типа TidMessage, которая определяется отдельным компонентом TIdMessage, расположенным на Indy Misc.
сабж - от англ subject - тема

Автор: fuckerok 14.12.2004, 08:40
У меня мой код вдруг заработал smile

Автор: Akella 5.1.2005, 12:29
У меня все работает без ошибок

Автор: Akella 17.2.2005, 12:57
Код

//отправка письма
procedure MailSend;
begin

//Настройка SMTP
SMTP.Host := 'smtp.mail.ru';
SMTP.Port := 25;

//Настройка сообщения (MailMessage)
MailMessage.From.Text := '[email protected]';
MailMessage.Recipients.EMailAddresses := '[email protected]';

MailMessage.Subject := 'сабж';
MailMessage.Body.Text := 'bla bla bla =)';

//отправка почты
try
  try
    SMTP.Connect(100000);
    SMTP.Send(MailMessage);
  except on E:Exception do
    begin
      StatusRichEdit.Lines.Insert(0, 'ОШИБКА: ' + E.Message); //вывод ошибки в RichEdit
    end;
  end;
finally
  if SMTP.Connected then SMTP.Disconnect;
end;
end;


как присоединить файлы в этом коде?

Автор: Berliner 14.10.2005, 18:43
Код

procedure TForm1.BitBtn1Click(Sender: TObject);
var mes:  TIdMessage;
 begin
  table1.First;
      while not table1.Eof do

begin
      if table1.FieldbyName('Îïåðàòîð').AsString='UMC' then

 begin
      Tel:=Table1.FieldByName('Íîìåð').AsString;
      //Edit7.Text:=Tel;
      ConnectInternet;


                   end;


[Error] Unit1.pas(162): Undeclared identifier: 'TIdMessage'[Error] Unit1.pas(162): Undeclared identifier: 'TIdMessage'
Добавлено @ 18:47
поскажите плиз почему ошибка

Автор: Snowy 14.10.2005, 21:33
В uses добавь IdMessage

Автор: Berliner 17.10.2005, 10:26
Спасибо добавил, но-
Вылезает еще одна ошибка Access violetion в этой строчке
Код

mes.Body.Text:=Edit1.Text+Edit2.Text+Edit3.Text+Edit4.Text+Edit5.Text+edit6.Text;


вот болеее полный код
Код

procedure ConnectInternet;
begin
Form1.IdSMTP1.Host:='10.234.12.100';
form1.IdSMTP1.Port:=25;
form1.IdSMTP1.Connect;
end;


Код

procedure TForm1.BitBtn1Click(Sender: TObject);
var mes:  TIdMessage;
 begin
  table1.First;
      while not table1.Eof do

begin
      if table1.FieldbyName('Оператор').AsString='UMC' then

 begin
      Tel:=Table1.FieldByName('Номер').AsString;
      ConnectInternet;
      mes.Recipients.EMailAddresses:=Tel;
      mes.Body.Text:=Edit1.Text+Edit2.Text+Edit3.Text+Edit4.Text+Edit5.Text+edit6.Text;
      IdSMTP1.Send(mes);
 end;

Подскажите в чем проблема? Как надо чтобы зароботало?

Автор: _hunter 19.10.2005, 10:34
значит mes.Body не созданно ( под него не выделена память ). читай справку как его создавать.
возможно как-то так: mes.Body = TBody.Create()

Автор: Berliner 19.10.2005, 11:41
Неполучилось у меняяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя smile надо дописать программку

Автор: _hunter 19.10.2005, 12:29
что не получилось? в справку заглянуть?.. это плохл...

Автор: Guest 19.10.2005, 12:44
С правке по IdMessage ничего нет

Автор: _hunter 19.10.2005, 12:51
в делфийской может и нет -- но кто мешает в официальную глянуть?
+ ладно, справки нет, но поискать по форуму что мешает? ++ даже искать, особо, не нужно -- достаточн оглянуть на второй пост в этой теме...

Автор: Гость_Berliner 19.10.2005, 13:40
Цитата
нужно -- достаточн оглянуть на второй пост в этой теме... 


Ok Спасиб

Автор: Berliner 24.10.2005, 13:32
такая ситуация: интересно что на ukr.net письма не доходят А на mail.yahoo.com доходят только ложаться в спамерский ящик (bulk mail) что єто может біть и на webmail.co.za -письма не доходят я думаю єто связано со спам защитой.

Код

begin
      if table1.FieldbyName('Оператор').AsString='UMC' then

 begin

     (* procedure ConnectInternet;
       begin
        Form1.IdSMTP1.Host:='10.234.12.100';
        form1.IdSMTP1.Port:=25;
        form1.IdSMTP1.Connect;
       end;  *)

      mes:=TIdMessage.Create(IdSMTP1);

      Tel:=Table1.FieldByName('Фамилия').AsString;
      mes.From.Name:='ff';
      mes.From.Address:='[email protected]';
      mes.Recipients.EMailAddresses:=имя@ukr.net
  
      mes.Body.Text:=Edit1.Text+Edit2.Text+Edit3.Text+Edit4.Text+Edit5.Text+edit6.Text;
      IdSMTP1.Send(mes);



 end;





Может кто нить знает как війьти из єтой ситуации

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)