Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите как отправить письмо используя сокеты? [D7, WinXP]


Страницы:   1 2 3

Lamer666 ©   (2008-09-07 13:11:00) 

Подскажите как отправить письмо используя сокеты?
Задача стоит так, с локального компьютера хочу отправлять письма, но не используя SMTP Сервера.


Сергей М.   (2009-08-27 15:25:00) [21]

Да ну хотя бы в целях отладки посмотреть Msg в OnResponse и RqType,ErrorCode в OnRequestDone ..

Полученная при этом инф-ция поможет тебе пролить свет на тайну "исчезновения" 9-го письам)


belousov   (2009-08-27 15:18:00) [22]

никак не обрабатываю... а как нужно?


Сергей М.   (2009-08-27 14:42:00) [23]

А как ты обрабатываешь OnRequestDone и OnResponse ?


belousov   (2009-08-27 14:31:00) [24]

Не доходят!


Сергей М.   (2009-08-27 13:39:00) [25]


> больше 8 писем не отправляется


Что, 9-е письмо прямо так и говорит "я не отправляюсь" ?

И ты уж определись как-нибудь, то ли они у тебя не отправляются, то ли не доходят .. Разные ж две разницы)


belousov   (2009-08-27 12:40:00) [26]

Пробовал и в одной сессии, разницы нет! Все равно больше 8 писем не отправляется! Должно же быть решение...


Сергей М.   (2009-08-27 08:34:00) [27]

Непонятно, зачем для отправки каждого письма из подготовленного к отправке списка писем ты всякий раз открываешь новую SMTP-сессию ...
Почему не оправить весь список в одной и той же сессии ?


belousov   (2009-08-27 03:57:00) [28]

Хотел бы продолжить тему... ситуация схожая... использую сервер исходящей почты smtp.mail.ru со своим аккаунтом. Использую ICS, т.к. с Indy проблем больше... Все замечательно отправляется и доходит и с кодировкой проблем нет, но вот когда посылаю письмо сразу нескольким людям(около 8 человек), то письма не доходят... я так понимаю, что mail.ru блокирует их отправку, принимает за смамство или что-то в этом роде... вот код:

//если есть кому отправлять, то
if ToComboBox.Text<>'' then
begin
 CFSets := LoadCFS;
 // установка SMTP
 with CFSets.SMTP_Sets do
  begin
   SMTP.Host:= SMTP_Host;
   SMTP.SignOn := SMTP_Host;
   SMTP.Port:= inttostr(SMTP_Port);
   Smtp.AuthType:= smtpAuthLogin; // atNone
   Smtp.Username:= SMTP_Login;
   Smtp.Password:= SMTP_Password;
   domain := copy(SMTP_Host, 6, length(SMTP_Host));
   Smtp.FromName := SMTP_Login + '@' + domain;
  end;
 //коннектимся
 //SMTP.Open;
 // установка сообщения
 // тема
 Smtp.HdrSubject := SubjectEdit.Text;
 Smtp.HdrFrom := FromEdit.Text; // адрес отправителя
 Smtp.MailMessage.Text := MsgTextMemo.Text;
 //проверяем кому нужно отправить сообщение
 if AnsiUpperCase(ToComboBox.Text)=AnsiUpperCase('Всем одногрупникам') then
  begin
   //выставляем позицию
   MsgSendProgressBar.Position := 0;
   MsgSendProgressBar.Max := SResListBox.Count;
   //перебираем элементы списка
   for i := 0 to SResListBox.Count - 1 do
    begin
     //отправляем поочередно письма по всем адресам из списка одногрупников
     SendMsg(SResListBox.Items.Strings[i]);
     //визуализируем отправку
     MsgSStatusLabel.Caption := 'Отправка письма ' + inttostr(i+1) + ' из ' + inttostr(SResListBox.Count);
     MsgSendProgressBar.Position := MsgSendProgressBar.Position + 1;
    end;
   {//ждем пока компонент готовиться к работе
   repeat
   Application.ProcessMessages;
   until (smtp.State = smtpReady) or (smtp.State = smtpInternalReady);
   //закрытие почтовой сессии
   SMTP.Quit;
   //ждем пока компонент готовиться к работе
   repeat
   Application.ProcessMessages;
   until (smtp.State = smtpReady) or (smtp.State = smtpInternalReady);
   //отключение от сервера
   SMTP.Abort;}
  end else
  begin
   //выставляем позицию
   MsgSendProgressBar.Position := 0;
   MsgSendProgressBar.Max := 1;
   //если же адресат один, то отправляем письмо только ему
   SendMsg(ToComboBox.Text);
   //визуализируем отправку
   MsgSStatusLabel.Caption := 'Отправка письма 1 из 1';
   MsgSendProgressBar.Position := MsgSendProgressBar.Position + 1;
   {//ждем пока компонент готовиться к работе
   repeat
   Application.ProcessMessages;
   until (smtp.State = smtpReady) or (smtp.State = smtpInternalReady);
   //закрытие почтовой сессии
   SMTP.Quit;
   //ждем пока компонент готовиться к работе
   repeat
   Application.ProcessMessages;
   until (smtp.State = smtpReady) or (smtp.State = smtpInternalReady);
   //отключение от сервера
   SMTP.Abort;}
  end;
end else
begin
 //просим выбрать адресата
 ShowMessage('Поле "кому" не может быть пустым!');
end;

Процедура SendMsg вот:

//коннектимся
SMTP.Open;
// получатель *+ копия
BuildRcptList(addressee){можно добавить получателя копии письма+','+CopyTo.Text};
Smtp.HdrTo := addressee;
//прикрепленных файлов нет
Smtp.EmailFiles := nil;
// отправка почты
try
 try
  //ждем пока компонент готовиться к работе
  repeat
  Application.ProcessMessages;
  until (smtp.State = smtpReady) or (smtp.State = smtpInternalReady);
  //отправляем письмо
  try
  SMTP.Mail;
  except on SMTPException do
   begin
    SMTP.Open;
    //ждем пока компонент готовиться к работе
    repeat
    Application.ProcessMessages;
    until (smtp.State = smtpReady) or (smtp.State = smtpInternalReady);
    SMTP.Mail;
   end;
  end;
  //добавляем адрес в список отправленных
  SendMails.Add(addressee);
 except on E:Exception do
  begin
   ShowMessage('Статус отправки: ERROR - '+E.Message);
   ShowMessage('Письмо не отправлено!');
  end;
 end;
finally
 //ждем пока компонент готовиться к работе
 repeat
 Application.ProcessMessages;
 until (smtp.State = smtpReady) or (smtp.State = smtpInternalReady);
 //закрытие почтовой сессии
 SMTP.Quit;
 //ждем пока компонент готовиться к работе
 repeat
 Application.ProcessMessages;
 until (smtp.State = smtpReady) or (smtp.State = smtpInternalReady);
 //отключение от сервера
 SMTP.Abort;
end;

По идее должно работать... ведь даже тот же outlook может сначала накопить кучку писем для отправки, а потом их все отправить кому нужно, причем там и по 50 писем за раз уходит нормально...


  (2009-08-26 11:24:00) [29]

Удалено модератором


Сергей М.   (2008-09-09 17:10:00) [30]


> Slym ©   (09.09.08 16:39) [17]


Тут до ебабушки граблей


Slym   (2008-09-09 16:39:00) [31]

Сергей М. ©   (08.09.08 11:40) [8]
someserver.ru - это не имя почтового сервера , а доменное имя.

да, но можно запросить через DNS MX запись этого домена...
и полученную запись использовать для доставки корреспонденции...
но тут другие грабли: MX сервера как правило более менее защищены от спама - DNS проверка обратой зоны, проверка на локальность и аутентификация и прочее


Lamer666   (2008-09-08 15:42:00) [32]


> Anatoly Podgoretsky ©   (08.09.08 13:44) [15]

Я подозревал!
Всем огромное спасибо: Anatoly Podgoretsky,Сергей М.!!!


Anatoly Podgoretsky   (2008-09-08 13:44:00) [33]

> Lamer666  (08.09.2008 13:27:13)  [13]

> А как же: http://www.delphiworld.narod.ru/base/smtp_replay_server.html

Тебя обманули, как ребенка.


Сергей М.   (2008-09-08 13:37:00) [34]


> Lamer666   (08.09.08 13:27) [13]
>
>


> А как же


Да все точно так же : если У Васи Пупкина нет smtp-сервера, то - хоть из штанов выпрыгни - послать письмо непосредственно Васе никак не удастся)


Lamer666   (2008-09-08 13:27:00) [35]


> Ты Кулспамером что ли решил заделаться, да ?)

Нет, темные делишки могу и через SMTP аккаунт рассылать...


> Провалилась твоя спам-схема, нету у Васи Пупкина SMTP сервера
> на машине.

8)


> Как можно реализовать то что невозможно в принципе ?

А как же: http://www.delphiworld.narod.ru/base/smtp_replay_server.html


Anatoly Podgoretsky   (2008-09-08 13:20:00) [36]


> Я вообще ставлю целью отправки писем с локальной машины
> сразу получателю!

Провалилась твоя спам-схема, нету у Васи Пупкина SMTP сервера на машине.


Сергей М.   (2008-09-08 12:40:00) [37]

Что-то мне подсказывает, что ты намерен творить темные делишки)

Ты Кулспамером что ли решил заделаться, да ?)


Сергей М.   (2008-09-08 12:38:00) [38]


> что то мне подсказывает что это схема не должна работать
> впринципе


Конечно не должна)


> встает вопрос реализации


Как можно реализовать то что невозможно в принципе ?


Lamer666   (2008-09-08 12:28:00) [39]

Я вообще ставлю целью отправки писем с локальной машины сразу получателю! Я представляю картину так, запустил на локальном компьюторе SMTP SERVER и через него шлю письма сразу vase-pupkinu@delphimaster.ru, но что то мне подсказывает что это схема не должна работать впринципе... вот и встает вопрос реализации...


Сергей М.   (2008-09-08 11:40:00) [40]


> если я отправляю письмо на blablabla@someserver.ru я могу
> пользовать sameserver.ru?


Нет, не можешь.

someserver.ru - это не имя почтового сервера , а доменное имя.


> мне нужно иметь аккаунт на mymail@mymail.ru  затем коннектиться
> к mymail.ru IdSMTP и используя свой аккаунт отправлять письмо?


Это классическая схема.
Если твой почтовый провайдер предоставляет возможность доставки твоей почт.корреспонденции за пределы своих почтовых доменов, то этого достаточно.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо