Форум: "Сети";
Текущий архив: 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.036 c