waik
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Вот пример отправки (данные берется из базы - датасеты ods****) // функция отправки текущего письма function MailSendCurrentRecordSynapse: boolean; var Msg: TMimeMess; // собщение StringList: TStringList; // содержимое письма mimepart, MIMEPartAtt: TMimePart; // части сообщения (на будущее) fn: string; SM_TO: string; begin SM_TO := GetMailStrCS(odsSMSM_TO.asstring); // адреса с исправленными разделителями if GetMailCount(SM_TO) = 0 then begin WriteLog('Отказано! Кривой e-mail for ' + SM_TO + ' . Sending fail!'); Result := false; Exit; end; Msg := TMimeMess.Create; // создаем новое сообщение StringList := TStringList.Create; try // Добавляем заголовки Msg.Header.Subject := odsSMSM_SUBJECT.asstring; // тема сообщения Msg.Header.From := odsSMSM_FROM.asstring; // имя и адрес отправителя Msg.Header.ToList.Add(SM_TO); // имя и адрес получателя // создаем корневой элемент mimepart := Msg.AddPartMultipart('alternative', nil); if Pos('<html>',odsSMSM_BODY.asstring)=0 then begin StringList.Text := odsSMSM_BODY.asstring; Msg.AddPartText(StringList, mimepart); end else begin StringList.Text := odsSMSM_BODY.asstring; Msg.AddPartHTML(StringList, mimepart); end; // Аттач if trim(odsSMSM_ATTACHMENT_FILE_NAME.asstring) <> '' then begin // есть аттач // сохраним вложение в файл fn := odsSMSM_ATTACHMENT_FILE_NAME.asstring; odsSMSM_ATTACHMENT_DATA.SaveToFile(fn); Msg.AddPartBinaryFromFile(fn, mimepart) end; // Кодируем и отправляем Msg.EncodeMessage; if smtpsend.SendToRaw(odsSMSM_FROM.asstring, SM_TO, edHost.Text, Msg.Lines, '', '') then begin WriteLog('e-mail for ' + SM_TO + ' is sending!'); Result := true; end else begin Result := false; WriteLog('e-mail for ' + SM_TO + ' fail!'); end; finally if fn <> '' then DeleteFile(fn); Msg.Free; StringList.Free; end; end; // synapse |