В сети много примеров кода для IdSMTP , в большинстве для indy версии 9.. Многие пользуются более новыми версиями инди 10.. и возникают проблемы с с кириллицей и отправкой файла , с чем столкнулся сам , и вот что получилось
Небольшой пример кода для отправки на сервер smtp.mail.ru
uses .. , idText, IdAttachmentFile ; ...... ..........
procedure TForm1.Button1Click(Sender: TObject); var Attach: TIdAttachmentFile; msg: TIdmessage; SMTP:TIdSMTP; mText:TidText; i:Integer;
begin SMTP:= TIdSMTP.Create(nil); SMTP.AuthType:=satDefault; SMTP.Username:='xxxx'; // логин отправителя SMTP.Password:='xxxxx'; // пароль отправителя SMTP.Host:='smtp.mail.ru'; // хост mail.ru SMTP.Port:=25; // порт mail.ru
msg:=TIdMessage.Create(nil); msg.OnInitializeISO := IdMessage1InitializeISO; msg.Subject:='Тест mail'; //тема try mText:=TidText.Create(msg.MessageParts,nil); mText.ContentType:='text/plain'; mText.CharSet:='windows-1251'; mText.Body.Add(Memo1.Text); // текст сообщения msg.From.Address:='xxxxx@mail.ru'; // от кого отправляем письмо msg.From.Name:='xxxx'; // логин отправителя msg.Recipients.EMailAddresses:='xxxx@mail.ru'; // кому отправить письмо msg.IsEncoded:=true;
FName:='C:/test.txt'; if FileExists(FName) then Attach:=TIdAttachmentFile.Create(msg.MessageParts,FName);
SMTP.Connect; if SMTP.Connected then try SMTP.Send(msg); except end; finally SMTP.Disconnect; SMTP.Free; msg.Free; end; end;
procedure TForm1.IdMessage1InitializeISO(var VHeaderEncoding: Char; var VCharSet: string); begin VHeaderEncoding := 'B'; // Base64 VCharSet :='windows-1251'; end;
|