Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.031 c
4-1077474261
Opilki_Inside
2004-02-22 21:24
2004.04.25
Как это реализовано??


11-1042971278
Igit
2003-01-19 13:14
2004.04.25
Горизонтальный скролл в ListBox


3-1080651084
Viktor
2004-03-30 16:51
2004.04.25
Использование в строке разных языков


8-1073893586
Lexer
2004-01-12 10:46
2004.04.25
Нужен DirectX для Delphi7


3-1080378157
unicode
2004-03-27 12:02
2004.04.25
Не могу правильно написать запрос!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский