Levél fogadása delphi-ban

Levél fogadása a Delphi-ban

Jó nap mindenkinek. Azt szeretném megkérdezni, hogyan mentheti el a csatolt fájlokat a levélhez.
eljárás TForm1.Button1Kattintson (Feladó: TObject);
var Saját üzenet: # xA0; TIdMessage;
# xA0; # xA0; CountMessages: Integer;
# xA0; # xA0; attach: TIDAttachment;
kezdődik
MyMessage: = TIdMessage.Create (null);
IdPOP31.Connect ();
CountMessages: = IdPOP31.CheckMessages ();
míg a CountMessages> 0 megkezdődik
ha IdPOP31.Retrieve (CountMessages, MyMessage) = Igaz, akkor kezdődik
# xA0; # xA0; RichEdit1.Lines.Assign (MyMessage.Body);
# xA0; # xA0; attach: = TIDAttachment.Create (MyMessage.MessageParts);
# xA0; # xA0; // Aztán nem tudom, mit tegyek (a mellékletekhez képest)
# xA0; //attach.SaveToFile(const Fájlnév: TFeliName): Boolean - ez a funkció a segédeszközben működik, nincs adat és példa az indy komponensekre.
végén;
CountMessages: = CountMessages - 1;
végén;
ShowMessage (IntToStr (IdPOP31.CheckMessages ())));
MyMessage.Free;
IdPOP31.Disconnect;
végén;


> Hogyan működik ez a funkció a segítségnyújtásban? Nincs adat

Itt egy ajánlat csak a segítségtől a funkcióig:

Üzenet tárol.
function SaveToFile (const Fájlnév: TFileName): Boolean;

const Fájlnév: TFileName

Az üzenet tárolási helye.

Boolean - Igaz, ha az üzenetrészeket tárolja.

A SaveToFile egy Boole-függvény, amelyet a fájlnévben megadott fájlhoz tartozó melléklet tárolására használnak.

Minden egyszerű és világos, mi szükséges?

a következőhöz: i: = 0 a csatoláshoz.Count - 1 do
# xA0; ha a [i] csatolást a TIdAttachmentFile, akkor
# xA0; # xA0; csatolja a [i] .SaveToFile fájlt (csatolja [i] .FileName);


> i: = 0 csatolásához. Összeg - 1 do
> # xA0; ha a [i] csatolást a TIdAttachmentFile, akkor
> # xA0; # xA0; csatolja a [i] .SaveToFile fájlt (csatolja [i] .FileName);

Tehát nem segít csatolni nincs sv-va vagy eljárás Count # xA0; - a fordítás során pirosra mutat, talán nem használok minden egységet.


> Hogy nem?

miért ez az üzenet? Ezt láttam már a TIdMessage és a
TIDAttachment.


> miért ez az üzenet?

Mindig egy sorban, nyilvánvalóan.

És honnan kérdezte, hogy ön külön fájlban kíván különálló részt menteni?


> attach nincs sv-va vagy eljárás Count

Lásd a TIdMessage.MessageParts.AttachmentCount fájlt


> Lásd a TIdMessage.MessageParts.AttachmentCount fájlt

Ez érthető az sv-in tartalmazza a mellékletek számát, és hogyan lehet mindegyiket külön menteni a merevlemezre?

Talán tévedek?

IGEN, ez ostobaság

használ. IdMessageParts.
var
# xA0; attfile: TIdAttachmentFile;

a MyMessage.MessageParts do
# xA0; az i: = 0 a gráf - 1 do
# xA0; # xA0; # xA0; # xA0; ha elemek [i] .PartType = mptAttachment akkor
# xA0; # xA0; # xA0; # xA0; # xA0; kezdődik
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; attfile: = Tételek [i] mint TIdAttachmentFile;
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; attfile.SaveToFile (attfile.FileName);
# xA0; # xA0; # xA0; # xA0; # xA0; végén;


> használ. IdMessageParts.

Most szidtam meg [Halálos hiba] Unit1.pas (8): A fájl nem található: "IdMessageParts.dcu"


> attfile: TIdAttachmentFile;

és itt [Hiba] Unit1.pas (37): Nem bejelentett azonosító: "TIdAttachmentFile"


> [Halálos hiba] Unit1.pas (8): A fájl nem található: "IdMessageParts.
> dcu "
>

Hát akkor rossz. Mi az Indy változata? A tizedikről beszélek.


> Nos, akkor rossz. Mi az Indy változata? A tizedikről beszélek.

Akkor minden világos 9.00.10 :)

de a 9-ke-ben mindegyiket valahol TIdMessageParts típusnak nevezik. Keresse meg a modulok szövegét, és adja hozzá a szükséges adatokat a felhasználónak.

A TIdMessage tartalmaz olyan MessagePart-okat, amelyek nem rendelkeznek a SaveToFile (.) Függvénnyel, a következő üzenetet küldtem:
TIDAttachment.Create (MainForm.MyMessage.MessageParts, "Unload.xml"); és minden rendben van, és amikor megkapom, nem tudom, hogyan juthatok hozzá a csatolt adatokhoz
talán nem használtam helyesen a TIDAttachmentet.


> de a 9-ke-ben mindegyik valahol a TIdMessageParts típusnak nevezik.
> # xA0; Keresse meg a modulok szövegének keresését, és adja hozzá a szükséges adatokat a felhasználónak.
>

A keresés nem hozott eredményt. (


> A keresés sikertelen

Nem lehet.

Ha nincs problémád a TIdMessage programmal, akkor a TIdMessageParts nem jelenik meg - mindkét ID-ra azonos IdMessage.pas egységben kerül bejelentésre.

Hol és hogyan "kereste" - nem világos)


> Hol és hogyan "keresett" - nem világos)

Search-> Find in Files; Keresd meg a TIdMessageParts-ot


>> Hol és hogyan "keresett" - nem világos)
>
> Keresés -> Keresés a fájlokban; Keresés keresése a TIdMessageParts-ban

Sajnálom, találtam :)


> Keresse meg a modulok szövegét, és adja hozzá a szükséges egységet a felhasználóhoz.

ez szerepel az IdMessage-ban, de ezt én használom.


Én használom

Akkor összetévesztesz valamit.

Pontosan a TIdMessagePartson van, hogy egyáltalán nem lehet "káromkodni".


> Akkor összetévesztesz valamit.
>
> "káromkodás" a TIdMessageParts-on nem lehet semmilyen módon.
>

azaz Var: mess_parts: TIdMessageParts; és minden legyen nishtyak.
így írok.

És az igazság nem esküszik. )
Tovább fogok választani.


>> aztán zavarodtál valamit.
>>
>> a "káromkodás" a TIdMessageParts-on nem lehet semmilyen módon.
>
>>
>
> azaz. Var: mess_parts: TIdMessageParts; és mindent meg kell
hogy nishtyak legyen.
> így írok.
>
És az igazság nem esküszik. )
> Tovább fogok választani.

de a mess_parts nem rendelkezik a SaveToFile függvénnyel

a MyMessage.MessageParts do
# xA0; i: = 0 a grófnak - 1 nem
# xA0; # xA0; # xA0; ha az [i] tétel a TIdAttachment
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; TIdAttachment (elemek [i]). SaveToFile (TIdAttachment (elemek [i]) .Fájlnév);


> a MyMessage.MessageParts do
> # xA0; i: = 0 a grófnak - 1 nem
> # xA0; # xA0; # xA0; ha az [i] tétel a TIdAttachment
> # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; TIdAttachment (elemek [i]). SaveToFile (TIdAttachment (elemek [i]).
> Fájlnév);

Mint minden nishtyak - már feldolgozott. de.
Írja a lista indexét a határokon kívül (0)
Checked - írta a ShowMessage (IntToStr (MyMessage.MessageParts)) nulla értéket, bár az üzenet két mellékletet tartalmaz. (


> Checked - írta a ShowMessage (IntToStr (MyMessage.MessageParts))
> nulla értéket ad vissza, bár az üzenet két mellékletet tartalmaz.
> :(

Talán az én Exchange gyorsabban veszi fel a leveleket, mint a program. )
Megpróbálok egy másik dobozt.


> Talán az én Exchange gyorsabban veszi fel a leveleket, mint a program.
>. )
> Megpróbálok egy másik dobozt.

Nem ugyanaz a shnyaga

Nos, van egy demo projekt Indy-maildemo.dpr-ben, miért nem tanulmányozod?


> Nos, van egy demo projekt Indy-maildemo.dpr-ben, miért
> nem tanulni?

C: \ Program Files \ Borland \ Delphi7 \ Demos \ Indy - ha ott van, ez egy szöveges fájl, amely a következőket tartalmazza:

Delphi 7
Indy V9 Demos

Az Indy V9 bemutató alkalmazásai elérhetők a
letöltés szakasz az Indy oldalon:

Mivel az új demókat folyamatosan építik és tesztelik,
ez a legfrissebb hely a demo számára
letöltés.

Ha bármilyen problémája van a demókkal kapcsolatban, kérjük, csatlakozzon a
"Indy Demos" csoport yahoo csoportokban, és jelentse azokat
ott:

Megértettem, hogy mi a ciklus - van egy ördög tudja, minti:
CountMessages: = IdPOP31.CheckMessages ();
míg a CountMessages> 0 megkezdődik
# xA0; a MyMessage.MessageParts elindul
# xA0; # xA0; mert i: = 0 a számláláshoz - 1 megkezdődik
# xA0; # xA0; # xA0; ha az [i] tételek a TIdAttachment, akkor kezdődnek
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; TIdAttachment (elemek [i]). SaveToFile (TIdAttachment (elemek [i]) .Fájlnév);
# xA0; # xA0; # xA0; végén;
# xA0; # xA0; végén;
# xA0; # xA0; vége;
# xA0; CountMessages: = CountMessages - 1;
végén;
A MyMessage.MessageParts mindig ugyanaz az üzenet, pl. nincs átmenet a másikra. Hogyan kell végrehajtani?


> MyMessage.MessageParts mindig ugyanaz az üzenet,
> # xA0; nincs átmenet a másikra. A megvalósítás nem
mondja meg?

Mindent megértettem
IdPOP31.Retrieve (CountMessages, MyMessage)

TIdAttachment (elemek [i]) SaveToFile (TIdAttachment (elemek [i]) .Fájlnév);
E vonal után most szidalmazás írja, hogy nem menthető.


> azt írja, hogy nem menthető

mit és hol? az üzenet teljes szövege lehetséges?

Hiba történt a csatolás mentése közben

És ha egy hibakeresőben megnézzük, hogy mi azonos az Fájlnév-vel?

És hol gondolod, hogy tárolásra kerül?

Írja be - az Undeclare Identifier [i] elemeket, de miután írtam:
SaveToFile (TIdAttachment (MyMessage.MessageParts .Items [i]) .Fájlnév);
Minden dolgozott! Köszönet mindenkinek!


> És hol gondolod, hogy tárolásra kerül?

Ha csak a projekt mappában található nevet adja meg, akkor a "C: \ blah blah blah" + "MyMessage.MessageParts.Items [i])"


> És ha egy hibakeresőben megnézzük, hogy mi azonos a fájlnévvel?

És mit kell keresni és annyira egyértelműen, hogy megegyezik a levélben szereplő információkkal, ha meg van írva.
Előfordulhat, hogy feldolgozni kell egy elfogadható értékre, és meg kell adnia, hogy hova kell menteni, ahogy a levelezők tennék, és nem arra, hogy hol az ördög tudja, mit írjon le.


> Írás - Undeclare azonosító elemek [i], de utána
> Írtam:

Ahogy vártuk - megtévesztett minket.


> Ha csak a projekt mappában megadja a nevet,

csalódás


> Hibás elképzelés

De még mindig megmutatom, hogy hol menthetem meg, és a fájlnevem repedésekből áll, ezért nem tartja fenn - azt hiszem, úgy tűnik problémásnak tűnik a kódolásban.


Mint ahogy vártuk - megtévesztett minket.

Csak itt a fájl neve nem teljesen oroszul - ezért a mentési hiba (úgy gondolom)


> Csak itt a fájlnév nem teljesen oroszul - innen
> és egy mentési hiba (úgy gondolom)

Igen. Az angolul. a nevek csak rendben vannak, de az orosz nevek nem mentenek.


> És mit kell keresni és annyira egyértelműen, hogy megegyezik a levélben szereplő információkkal,
> # xA0, ha írva van.
> Előfordulhat, hogy feldolgozni kell egy elfogadható értékre és meg kell adni, hogy hol
> mentse, mint a postás, és nem az ördög elvitte
> tudja, mit írjon le.

Igen, igazad van, most próbáltad - nem menteni írja az eerror megtakarító mellékletet.
De mi van az orosz fájlnevekkel? AttacmentEncoding. Vagy valami mást?


> Csak a fájlnév nem teljesen oroszul

valami ilyesmi:
=? koi8-r? B? 09fJztjJLnJ0Zg ==? =


> valami ilyesmi:
> =? koi8-r? B? 09fJztjJLnJ0Zg ==? =

Igen. csak a kiterjesztés helyesen jelenik meg :)


> csak a kiterjesztés helyesen jelenik meg

amit nem tudok elhinni. Megmutatja, hogy az összes vagy semmi.


Valami nem hisz. Megmutatja, hogy az összes vagy semmi.

A Vach Windows MyMessage.MessageParts.Items [i]) hibakeresésnél a FileName Value = itt a r? B? 09fJztjJLnJ0Zg.zip típusa


> r? B? 09fJztjJLnJ0Zg.zip

teljes képtelenség. ez nem lehet.


> teljes ostobaság. ez nem lehet.

Most szó szerint írok


Mint ahogy vártuk - megtévesztett minket.
>
> Csak itt a fájlnév nem teljesen oroszul - innen
> és egy mentési hiba (úgy gondolom)

Nem hazudtál itt, nem tudtad megmenteni, nem is csináltad össze a programot!


>> r? B? 09fJztjJLnJ0Zg.zip
>
> teljes ostobaság. ez nem lehet.

"= koi8-rBBa 99nH0tXay8E = a = xml"
fájlnév Unload.xml

Folytatja a tésztát a fülekre.


Nem hazudtál itt, nem lehetett beszélni a megőrzésről,
> # xA0, akkor még nem fordította le a programot!

Hibák, fordítások és hibaüzenetek a RUN időből származnak


> feltérképezték, és a hibaüzenetek a RUN időből származtak

Itt van:


> Írás - Undeclare azonosító elemek [i]

Pontosan nem.


> Folytatja a tésztát a fülekre.

A fájlokat már csak angolul mentették. címei
Nem is kérdeztem az összeállításról. ha igen. És a kérdés az, hogyan kell menteni az "orosz" fájlokat.

Egyébként nagyon sokat köszönünk umbra számára, hogy segítséget és segítséget nyújtson ehhez a feladathoz, de egyelőre véget ér a végére (az orosz nevek nem kerülnek mentésre). (


> Pontosan nem a.

Sajnálom a debugger, de a fordítás nem esküszöm.

100% -ban biztos vagyok benne, hogy ez a fájlnév. # xA0, speciális karaktereket tartalmaz (ha a mellékelt fájl oroszul van)


> = koi8-rBBa 99nH0tXay8E = a =

az első kérdőjel után - a cím kódolása
a második - az átviteli kódolási módszer, In-Base64, Q - idézett-nyomtatható
a harmadik után és az utolsóig - maga a név. A visszaállításhoz át kell fordítanod a Base64-ről - kapd meg a nevet a koi8-r-ban. Ezután le kell fordítanunk a koi8-r-ről az windows-1251-re (ha szükséges)


> az első kérdőjel után - a cím kódolása
> a második után - az átvitel kódolási módja, az In-Base64,
> # xA0; Q - idézett-nyomtatható
> a harmadik után és az utolsóig - maga a név. Az ő
> restore, le kell fordítanod a Base64-ről - kapd meg a nevet
> a koi8-r-ban. Ezután le kell fordítanunk a koi8-r-ről az windows-1251-re
> (ha szükséges)

Ez minden lehetséges Delphi-ban?


> Mindez a Delphi-ban állítható be?

Inkább, hogy milyen irányba csöpög.

a Base64 esetében például a TIdDecoderMIME vagy a DecodeString funkció az EncdDecd.pas modulból
a koi8-r-hez - tele van a Delphi internetes megvalósításaiban, és saját maga is írhat.


> Base64 esetén például a TIdDecoderMIME vagy a DecodeString funkció
> az EncdDecd.pas modulból
> a koi8-r-hez - teljes körű megvalósítások a Delphi-n az interneten, és
> írhatod a sajátodat.

Köszönöm a segítséget. )

file_name: = IdDecoderMIME1.DecodeString (String (TIdAttachment (MyMessage.MessageParts.Items [i]) .FileName));
Akár lehetséges, hogy tegyük meg, hogy ez téves: Egyenetlen # xA0; méret a dekóderben ToStream


> Lehetséges,

lehetetlen. Csak a nevét kell dekódolni, nem pedig a FileName teljes értékét. Lásd [60]


> lehetetlen. Csak a nevét kell dekódolni, és nem mindet
> a FileName értéke. Lásd [60]

Aztán a kérdés az, hogy ez a vonal hogyan értelmezhető a határolókkal, van-e a Delin funkció ontológiája a VB-ből, vagy van-e más megközelítés?


> Létezik-e a Delin funkciója a VB-ből vagy más megközelítésről?
> Szüksége van?

analóg funkció Delim :) izvenyayus


> lehetetlen. Csak a nevét kell dekódolni, és nem mindet
> a FileName értéke. Lásd [60]

Kiderült, hogy megkapja a fájl nevét, de dekódolásakor mindez kegyetlen, de most különleges karakterek nélkül, és továbbra is fennáll, azaz Úgy gondolom, hogy be kell vonulni a vonalat # xA0, windows-1251, ha igen, hogyan kell csinálni? Adjon naprstvlenie kérjük.


> be kell vonni egy stringet # xA0; windows-1251,

kell

Vigye a karaktereket a karakterláncba, és ha a kód nagyobb mint 127 ($ 79), akkor helyezze el a kívánt karaktert a windows-1251-ből

Memória: 0,89 MB
Hossza: 0,195 másodperc

Kapcsolódó cikkek