Avatar billede c9steen Nybegynder
30. maj 2000 - 21:02 Der er 15 kommentarer og
1 løsning

Mangler Lf og Cr ved Memo -> Email

Jeg forsøger at få afsendt en Memo-tekst som E-mail og det lykkes at få startet E-mail programmet.

Problemet er, at jeg ikke kan få linieskift ført med over. Teksten fremstår som en lang tekststreng.

Jvf. andre indlæg har jeg forsøgt mig med følgende, hvor jeg fører outStr til Email:

  for i := 0 to Memo1.Lines.Count-1 do
  outStr := outStr +Memo1.Lines[i] +#10#13;

samt erstattet #-tegnet med chr() koden - intet af det virker

Hjælp ønskes.
Avatar billede dj Nybegynder
30. maj 2000 - 21:32 #1
uhm.. hvorfor sender du ikke bare mailen fra dit eget program, ved at bruge en SMTP komponent ?

Hvis ikke dette er fornuftigt i dit tilfælde så mener jeg faktisk at dit spørgsmål har været stilt før, jeg har ihvertfald set hvordan man skulle gøre det engang, det er desværre bare for længe siden til at jeg kan huske hvor ... men det KAN lade sig gøre :)
Avatar billede borrisholt Novice
30. maj 2000 - 21:56 #2
Der findes en masse E-mail komponenter du kan hente ned fra nettet ... Personligt foretrækker jeg nogen skrevet af en Belgier. Jeg kan ikke huske hans navn, men har har doneret koden til delphi-jedi projektet. Dem finder du på adressen http://www.delphi-jedi.org/

Hans SMTP komponent er 500 gange bedere end det der følger med Delphi. Brug det i stedet.

Jens B
Avatar billede dj Nybegynder
30. maj 2000 - 22:14 #3
Borrisholt>>
tjah.. well, hvis det nu ikke ligefrem er et emailprogram han skal lave, men bare skal kunne sende en mail så virker dem der ligger i Delphi nu ret glimrende ...

Desuden kunne det da også være vi lige skulle høre om det med at maile fra hans eget program, er en løsning for ham, jeg nævnte det bare som et alternativ ..
Hans spørgsmål er jo ligesom noget helt andet .. så lad dog være med at svare på noget som manden slet ikke har spurgt om ..
Avatar billede c9steen Nybegynder
30. maj 2000 - 22:53 #4
Well, jeg er ret ny udi Delphi, så jeg ved ikke lige pt, hvordan jeg håndtere komponenter men det kan vel lade sig gøre at sætte sig ind i.

Nej, jeg har ikke brug for en E-mail klient. Jeg skal kun kunne flytte teksten over i mit eksisterende E-mail program, hvor jeg så skal kunne anvende den adressebog, som ligger her.

Jo, sp. er stillet tidligere men jeg kan stadig ikke få det til at virke, selvom jeg anvender de beskrevne metoder. Har forsøgt både til Eudora, Netscape og Outlook express - stadig samme resultat: én lang tekst.

borrisholt>>
Jeg bliver nødt til at afvise dit svar, da jeg ikke har brug for en så omfattende løsning.
Avatar billede denniss Nybegynder
30. maj 2000 - 23:10 #5
prøv istedet for en memo.. så brug en richtextmemo...
Avatar billede hlj Nybegynder
31. maj 2000 - 09:03 #6
Prøv:

  for i := 0 to Memo1.Lines.Count-1 do
  NMSMTP1.PostMessage.Body.Add(Memo1.Lines[i]);

Det er Delphi's normale SMTP komponent
Avatar billede sjensen Nybegynder
31. maj 2000 - 09:44 #7
prøv den lette metode:

outstr := memo1.text;

Den flytter alle linier + linieskrif med over i en sætning.

Text propertyen for en memo er alle linierne sat i røven af hinanden. Crlf er derfor en del af teksten.
Avatar billede dj Nybegynder
31. maj 2000 - 10:23 #8
Det kan egentlig godt ske at sjensen har fat i noget der, men jeg kom lige til at tænke på at der jo kun kan være 255 tegn i en stringvariabel, så hvis det er en størrer email du skal sende, kan det måske godt være at det er smartere for dig at bruge lidt tid på at sætte sig ind i delphi's egen SMTP komponent, hvis du dropper komponenten på formen og trykker F1 og går ind under et eksempel så kan du få en eksempelkode på hvordan du kan komme til at sende email med den.
Avatar billede sjensen Nybegynder
31. maj 2000 - 10:39 #9
dj, max længde på en stringvar i Delphi (fra d3) er 2.14 GB og kun for såkaldte shortstrings er den 255.

de 255 er fra gamle dage (d1 og d2)

du kan til hver en tid flytte data fra en memo ved at bruge text-property over i en string, og igen over i en listbox eller en stringlist. Alle har en text-property med en max længde på 2.14gb og alle vil huske både cr og lf.

Jeg bruger dette i mange sammenhænge.
Avatar billede dj Nybegynder
31. maj 2000 - 11:16 #10
hehe, ok, jeg er måske lidt gammeldags så :)
Avatar billede c9steen Nybegynder
31. maj 2000 - 20:14 #11
deniss>>
RichText løser ikke problemet!

sjensen>>
Memo1.Text løser ikke problemet! Jeg vil synes det er logisk, som du nævner, at CrLf er en del af de enkelt linier ...

hlj>>
SMTP komponent burde kunne undgås, og det er ikke formålstjenligt, hvis jeg selv skal opsætte E-mail klient - men jeg er for indeværende nødt til at prøve det af.


Jeg vedlægger den samlede kode for hændelsen:

procedure TForm1.SendsomEmail1Click(Sender: TObject);
var
i: Integer;
outStr, email: string;
begin
  for i := 0 to Memo1.Lines.Count-1 do
  outStr := outStr +Memo1.Lines[i];
  email := InputBox('Modtager','Angiv modtagers E-mail:','');
  if email <> '' then
  shellExecute(0,'Open',PChar('mailto:'+email+'?subject=Teksteditor&body='+Memo1.Text),nil,nil,sw_shownormal);
end;


Mon det gør en forskel at det er Delphi 3 på Win 98 ???
Avatar billede c9steen Nybegynder
31. maj 2000 - 20:18 #12
PS:

Uanset om jeg indsætter +#13#10 eller +chr(13)+chr(10) i forlængelse af outStr := outStr +Memo1.Lines[i], så virker det ikke.
Avatar billede stone Forsker
01. juni 2000 - 01:43 #13
prøv denne her. den virker !!!

{koden sender indhold i memo til outlook og laver en korrekt opstilling}
procedure TBestilling.Bestilling1Click(Sender: TObject);
var
  i : Integer;
  outStr : string;
  FImotor : string;
  begin
  for i := 0 to Richedit1.Lines.Count-1 do
    outStr := outStr+Richedit1.Lines[i]+'%0D%0A';
shellExecute(0,'Open',PChar('mailto:'+FImotor+'?subject='+
Bestilling.text+'&body='+outStr),nil,nil,sw_shownormal);
end;
Avatar billede stone Forsker
01. juni 2000 - 02:09 #14
rettelse:

{koden sender indhold i memo til outlook og laver en korrekt opstilling}
procedure TBestilling.Bestilling1Click(Sender: TObject);
var
  i : Integer;
  outStr,Email : string;
    begin
  for i := 0 to Richedit1.Lines.Count-1 do
    outStr := outStr+Richedit1.Lines[i]+'%0D%0A';
shellExecute(0,'Open',PChar('mailto:'+email+'?subject='+
Bestilling.text+'&body='+outStr),nil,nil,sw_shownormal);
end;
Avatar billede c9steen Nybegynder
01. juni 2000 - 04:19 #15
Ubetinget

.. og den virker også med en Memo1 :-)

TAK :-)
Avatar billede c9steen Nybegynder
01. juni 2000 - 04:24 #16
stone>>

He, he - jeg har lige fundet svaret, du tidligere selv fik ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester