Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

SMTP-отправка писем через IdSMTP   Найти похожие ветки 

 
ALF   (2004-02-29 02:42) [0]

Здравствуйте! Хочу сделать простой e-mail клиент для ОТПРАВКИ почты (текст без форматирования) с аутентификацией (указанием имени пользователя и пароля). Для этого использую IdSMTP-client клиент (Indy). C помощью IdSmtp1.QuickSend(...) удается отправить только через open-relay (без аутентификации) SMTP серверы. Покажите как правильно связываться с SMTP сервером для отправки? Никаких вложений, форматирования текста не надо! Просто отправить текст на ящик? И обязательно с "залогиниванием" перед отправкой! Заранее благодарен!


 
Delphin ©   (2004-02-29 12:43) [1]

procedure TForm1.ConnectExecute(Sender: TObject);
begin
IdSmtp1.Host:=Form2.Edit1.Text;
IdSmtp1.Username:=Form2.Edit2.Text;
IdSmtp1.Password:=Form2.Edit3.Text;
IF Form2.RbCheckBox1.Checked Then
Begin
IF Form2.ComboBox1.Text="None" Then
Idsmtp1.AuthenticationType:=AtNone;
IF Form2.ComboBox1.Text="Login" Then
Idsmtp1.AuthenticationType:=AtLogin;
End;
Try
IdSmtp1.Connect();
Except
End;

procedure TForm1.SendExecute(Sender: TObject);
begin
IF not IdSmtp1.Connected Then
Connect.Execute;
Try
IdMessage1.From.Name:=Edit1.Text;
IdMessage1.From.Address:=Edit2.Text;
IdMessage1.Recipients.Add.Address:=Edit3.Text;
IdMessage1.Subject:=Edit4.Text;
IdMessage1.Body.Add(M);
IdSmtp1.Send(IdMessage1);
Finally
IdMessage1.Clear;
IdSmtp1.Disconnect;
End;

Ну всё делается примерно так :)


 
DelphiN! ©   (2004-02-29 13:01) [2]

Это что за жалкое породие :-)


 
csr ©   (2004-02-29 14:23) [3]

ИМХО паршивый код :). Юзай лучше это.

uses
IdSMTP, IdMessage;

procedure SendMail(ASMTPHost, AFrom, ATo, AReplyTo, ASubject: string;
APriority: Integer; ACc, ABcc, Content: string; AWithRecipient: Boolean);
var
MsgSend: TIdMessage;
SMTP: TIdSMTP;

begin
MsgSend := TIdMessage.Create(nil);
SMTP := TIdSMTP.Create(nil);
try
  with MsgSend do
  begin
    Body.Text := Content;
    From.Text := AFrom;
    ReplyTo.EMailAddresses := AReplyTo;
    Recipients.EMailAddresses := ATo; { To: header }
    Subject := ASubject; { Subject: header }
    Priority := TIdMessagePriority(APriority); { Message Priority }
    CCList.EMailAddresses := ACc; {CC}
    BccList.EMailAddresses := ABcc; {BBC}
    if AWithRecipient then
      ReceiptRecipient.Text := From.Text {We set the recipient to the From E-Mail address }
    else
      ReceiptRecipient.Text := ""; {indicate that there is no receipt recipiant}
  end;

  SMTP.AuthenticationType := atNone;

  //SMTP.Username := SmtpServerUser;
  //SMTP.Password := SmtpServerPassword;

  {General setup}
  SMTP.Host := ASMTPHost;
  SMTP.Port := 25;

  {now we send the message}
  SMTP.Connect;
  try
    SMTP.Send(MsgSend);
  finally
    SMTP.Disconnect;
  end;
finally
  MsgSend.Free();
  SMTP.Free();
end;
end;


 
ALF   (2004-03-01 00:24) [4]

Ммм... Спасибо, но смотрю эти строки тут по методу копи-пейст из других веток конференции... Я всю облазил, несколько раз встретил. Можно пожалуйста поподробнее немного, а желательно код всего pas-файла, а то я пока что в Дельфи новичок :(


 
ALF   (2004-03-01 02:47) [5]

Вот предположим я добавил аутентификацию (разкомментировал строки). Получилось вот что:

procedure SendMail(ASMTPHost, AFrom, ATo, AReplyTo, ASubject, SmtpServerUser, SmtpServerPassword: string;
APriority: Integer; ACc, ABcc, Content: string; AWithRecipient: Boolean);
var
MsgSend: TIdMessage;
SMTP: TIdSMTP;

begin
MsgSend := TIdMessage.Create(nil);
SMTP := TIdSMTP.Create(nil);
try
 with MsgSend do
 begin

   Body.Text := Content;
   From.Text := AFrom;
   ReplyTo.EMailAddresses := AReplyTo;
   Recipients.EMailAddresses := ATo; { To: header }
   Subject := ASubject; { Subject: header }
   Priority := TIdMessagePriority(APriority); { Message Priority }
   CCList.EMailAddresses := ACc; {CC}
   BccList.EMailAddresses := ABcc; {BBC}
   if AWithRecipient then
     ReceiptRecipient.Text := From.Text {We set the recipient to the From E-Mail address }
   else
     ReceiptRecipient.Text := ""; {indicate that there is no receipt recipiant}
 end;

 SMTP.AuthenticationType := atLogin;

 SMTP.Username := SmtpServerUser;
 SMTP.Password := SmtpServerPassword;

 {General setup}
 SMTP.Host := ASMTPHost;
 SMTP.Port := 25;

 {now we send the message}
 SMTP.Connect;
 try
   SMTP.Send(MsgSend);
 finally
   SMTP.Disconnect;
 end;
finally
 MsgSend.Free();
 SMTP.Free();
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
sendmail(combobox3.Text, Edit3.Text, precode+combobox2.Text+Edit1.Text+"@"+prefix, Edit3.Text, Edit4.Text, Edit6.Text, Edit7.Text, 1, "", "", Memo1.Text, True);
end;

------------
На Mail.ru отправляется - без проблем! А вот хотя бы Rambler - беда! Пишет 5.7.0 Authentification Required! Блин!!! Я уже не могу больше!!! Что не так?!?!?!?


 
AloneAli   (2004-03-01 15:17) [6]

>sendmail(combobox3.Text, Edit3.Text, >precode+combobox2.Text+Edit1.Text+"@"+prefix, Edit3.Text, >Edit4.Text, Edit6.Text, Edit7.Text, 1, "", "", Memo1.Text, True);
Напиши поконкретнее, что скрывается за Edit"ами и ComboBox"ами! Тогда тебе скажу, в чем твоя ошибка, потому что функция SendMail csr(c) отлично и без каких-либо проблем работает( за что ему большое спасибо!)


 
ALF   (2004-03-01 18:50) [7]

combobox3 - список SMTP серверов

Edit3 - email отправителя

precode+combobox2.Text+Edit1.Text+"@"+prefix - это сам адрес получателя, не особо важно из чего состоит...

Edit4 - тема письма

Edit6 - Логин

Edit7 - Пароль

Memo1 - текст сообщения

----------------------------
Что все-таки не так? Ведь включил я аутентификацию!


 
Verg ©   (2004-03-01 18:55) [8]


> [7] ALF   (01.03.04 18:50)
> combobox3 - список SMTP серверов
>
> Edit3 - email отправителя
>
> precode+combobox2.Text+Edit1.Text+"@"+prefix - это сам адрес
> получателя, не особо важно из чего состоит...
>
> Edit4 - тема письма
>
> Edit6 - Логин
>
> Edit7 - Пароль
>
> Memo1 - текст сообщения


Это и так понятно.
Лучше ответь:
Кому отправляешь?
от имени кого отправляешь?
и к какому SMTP серверу коннектишься?
На эти вопросы достаточно ответить примерно так:

From: somebody@mail.ru
To:   somebody@yandex.ru
Host: mail.ru
Port: 25

т.е. важен Host и то, что после @ в адресах From, To.


 
ALF   (2004-03-01 20:55) [9]

From: alfwap@mail.ru
To: 79053118534@sms.beemail.ru
Host: pop3.rambler.ru
Port: 25


 
Verg ©   (2004-03-01 21:09) [10]


> Ведь включил я аутентификацию!


Так. Что значит включил?
Ты имеешь аккаунт на rambler-е? Так и отправляй письма с этого аккаунта, а не с <кто-то там>@mail.ru.


 
Anatoly Podgoretsky ©   (2004-03-01 21:43) [11]

Для начала попробуй

From: you@rambler.ru
To: you@rambler.ru


 
ALF   (2004-03-01 22:39) [12]

Есть! Приходят письма! Странно как-то, вроде бы так и делал... Наверное мне должен был кто-то сказать все же, чтобы получилось :-) ! Спасибо всем! Программа думаю выйдет полезная - SMS через E-mail.



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.022 c
7-1077879637
Ozone
2004-02-27 14:00
2004.04.25
модель материнской платы


3-1080585053
Крутыш
2004-03-29 22:30
2004.04.25
Поиск в базе! КАК!


1-1081505904
hgd
2004-04-09 14:18
2004.04.25
Как сделать форму поверх всех


3-1080391582
Karlson
2004-03-27 15:46
2004.04.25
ВЫзов метода DBGrid1CellClick из любого места программы


1-1081160532
infom
2004-04-05 14:22
2004.04.25
Загрузка ресурса, что не так