Форум: "Сети";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];
ВнизКомпонент IdSMTP Найти похожие ветки
← →
Ellika (2003-09-12 08:17) [0]Как используя компонент IdSMTP отправить почту с вложенным файлом (если можно, примерчик).
← →
borg (2003-09-12 08:24) [1]У меня этот компонент так и не заработал вместо него можно использовать NMSMTP с закладки FASTNET. Делает то же самое что и IdSMTP
← →
borg (2003-09-12 08:27) [2]А вот если поможет исходник
begin
if NMSMTP1.Connected then NMSMTP1.Disconnect;
NMSMTP1.Host:=Form2.Edit1.Text;
NMSMTP1.Port:=strtoint(Form2.Edit2.Text);
NMSMTP1.PostMessage.FromAddress:=Form2.Edit3.Text;
NMSMTP1.Connect;
if OpenDialog1.Execute then Memo1.Lines:=opendialog1.files;
for i:=0 to CheckListBox1.Items.Count-1 do
if CheckListBox1.Checked[i] then
begin
Table1.Locate("name",CheckListBox1.Items.Strings[i],[]);
if Table1.FieldByName("mail").AsString<>"" then
begin
NMSMTP1.PostMessage.ToAddress.Add(Table1.fieldbyname("mail").AsString);
NMSMTP1.PostMessage.Attachments.Add(memo1.lines.Strings[0]);
NMSMTP1.PostMessage.Subject:=Edit1.Text;
for c:=0 to Memo1.Lines.Count do NMSMTP1.PostMessage.Body.Add(Memo1.Lines.Strings[c]);
NMSMTP1.SendMail;
end;
end;
NMSMTP1.Disconnect;
end
← →
Vinter (2003-09-12 08:29) [3]В седьмых делфях его походу нет, где его можно взять?
← →
Е-Моё имя (2003-09-12 10:29) [4]
> У меня этот компонент так и не заработал
плохой компонент, правда?
← →
AlexSV (2003-09-12 11:10) [5]> Ellika (12.09.03 08:17)
> если можно, примерчик
Можно примерчик:
procedure SendMessage;
var
IdMes: TIdMessage;
begin
IdMes := TIdMessage.Create(nil);
try
// Заполняем Message
FillMessage(IdMes); // Это отдельная тема
with TIdSMTP.Create(nil) do
try
Host := "mailhub.microsoft.com"; // адресс почтового сервера
Connect(1000);
if Connected then begin
Send(IdMes);
Disconnect;
end else
ShowMessage("Не найден почтовый сервер.");
finally
Free;
end;
finally
IdMes.Free;
end;
end;
← →
Ellika (2003-09-12 12:41) [6]А что такое FillMessage(IdMes)и где связь с файлом?
← →
AlexSV (2003-09-12 13:51) [7]> FillMessage(IdMes)
Это процедура, созданая Вами для инициализации объекта класса TIdMessage. Там, собсвенно, должно быть описано заполнение свойств Вашего Message"а, в том числе и связь с файлом.
Приблизительно так:
procedure FillMessage(AMes: TIdMessage);
begin
with AMes do try
From.Address := "Ваш адресс (если не секрет, но что-то написать надо)";
Subject := "Собственно sabj";
Body.CommaText := "Тело сообщения";
// А вот и связь с файлом
TIdAttachment.Create(idMes.MessageParts, "Имя файла-Attach"а");
Recipients.EMailAddresses := "Адресс получателя";
// И остальные параметры при необходимости
// типа CharSet := "windows-1251";
end;
end;
PS: А, вообще то, у Indy есть прекрасные и легко понимаемые Demo примеры.
← →
Николай Васильев (2003-10-10 10:03) [8]Доброе утро!
Уважаемые мастера, нужен ваш совет.
Никак не получается представить в читаемом виде тему, тело сообщения и заголовок присоединяемого файла при отправке с помощью компонентов TidSmtp + TidMessage. Charset := "win-1251" , но это пока не помогло :(.
Очень прошу совета.
← →
Николай Васильев (2003-10-13 11:04) [9]Гспода, неужели никто не сталкивался? Или сталкивались, но проблема не решена?
← →
Vogus (2003-10-22 15:39) [10]2 Николай Васильев
//****IdGlobal.pas
TIdCharSet = (csGB2312, csBig5, csIso2022jp, csEucKR, csIso88591, csRus);
function GetSystemLocale: TIdCharSet;
begin
{$IFDEF LINUX}
Result := GSystemLocale;
{$ENDIF}
{$IFDEF MSWINDOWS}
case SysLocale.PriLangID of
LANG_CHINESE:
if SysLocale.SubLangID = SUBLANG_CHINESE_SIMPLIFIED then
Result := csGB2312
else
Result := csBig5;
LANG_JAPANESE: Result := csIso2022jp;
LANG_KOREAN: Result := csEucKR;
LANG_RUSSIAN: Result := csRus;
else
Result := csIso88591;
end;
{$ENDIF}
end;
//**IdCoderHeader.pas
procedure InitializeISO(var TransferHeader: TTransfer; var HeaderEncoding: char;
var CharSet: string);
begin
TransferHeader := bit8; { header part conversion type }
HeaderEncoding := "B"; { base64 / quoted-printable } {Do not Localize}
case GetSystemLocale of
csRus: CharSet := "Windows-1251"; {Do not Localize}
csGB2312: CharSet := "GB2312"; {Do not Localize}
csBig5: CharSet := "Big5"; {Do not Localize}
csIso2022jp:
begin
CharSet := "ISO-2022-JP"; {Do not Localize}
TransferHeader := iso2022jp { header needs conversion }
end;
csEUCKR: CharSet := "EUC-KR"; {Do not Localize}
else
CharSet := "ISO-8859-1"; {Do not Localize}
HeaderEncoding := "Q"; {Do not Localize}
end;
end;
Ищи в исходниках и меняй.
Хотя можно обойтись одной строчкой: после else
CharSet := "ISO-8859-1"; - заменить на CharSet := "Windows-1251";
← →
Erik (2003-10-22 16:03) [11]Мне тоже пришлось исходник менять, если кому надо заполнять Attachment не из файла. Я сделал так.
TIdAttachment(fIdMessage.MessageParts[0]).Body := "ля-ля-ля";
-------------- изменять надо idMessages.pas -----------------
.......
TIdAttachment = class(TIdMessagePart)
protected
FContentDisposition: string;
FFileIsTempFile: boolean;
FFileName: TFileName;
{ TODO -oErik -cWaring : Change Class TIdAttachment }
FBody: string;
procedure SetBody(const Value: string);
......
public
...
{ TODO -oErik -cWaring : Change Class TIdAttachment }
property Body: string read FBody write SetBody;
end;
......
procedure TIdAttachment.Encode(ADest: TStream);
var
Stream: TStringStream;
begin
{ TODO -oErik -cWaring : Change Class TIdAttachment }
if FBody = "" then
begin
---- то старое
else
begin
Stream := TStringStream.Create(FBody);
try
with TIdMessageEncoderMIME.Create(nil) do
try
Encode(Stream, ADest);
finally Free;
end;
finally Stream.Free;
end;
end;
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c