Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.009 c
3-52117
Oleg_em
2003-11-21 08:10
2003.12.16
Insufficient memory блин...


4-52443
Sfagnum
2003-10-23 15:01
2003.12.16
Непонятки с EM_LINELENGTH в RichEdit


14-52374
Дон Хуан
2003-11-03 12:42
2003.12.16
---|Ветка была без названия|---


1-52236
PredatoR_777
2003-12-04 21:56
2003.12.16
Button


1-52187
timak
2003-12-02 20:43
2003.12.16
КАК перевернуть QRLabel?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский