Her er noget code, jeg benytter i et program jeg har skrevet. Coden virker, så måske kan den gi\' inspiration?
Det skal lige siges, at der i coden kaldes en rutine kaldet GetEmailUserInfo. Det er en rutine jeg har skrevet, der går ind i registrerings databasen og der finder oplysninger om POP3UserID, SMTPServer adresse, Email adresse mv. Dette er kun nødvendigt, fordi min application kommer ud til mange forskellige folk med forskellige mail systemer (Outlook, Notes etc.). Hvis info ikke kan findes i RegDB\'en (fx. fordi brugeren benytter et for mig ukendt email system, således at jeg ikke ved hvorledes jeg finder informationerne, så spørges brugeren og indtastede data gemes til en anden god gangs skyld. Hvis denne info er kendt, som den ser ud til at være i dit eksempel, så er det jo inderligt overflødigt.
Function TfmSendEmail.SendMail : Boolean; Const ExcepTxt = \'Send Mail action aborted by user.\';
Procedure ParseAddressToStrings(Addr : String; Strings : TStrings); Begin // Remove all space chars. While Pos(\' \', Addr) > 0 Do Delete(Addr, Pos(\' \', Addr), 1);
// Change all \',\'s to \';\'s. While Pos(\',\', Addr) > 0 Do Addr[Pos(\',\', Addr)] := \';\';
While Length(Addr)>0 Do If Pos(\';\', Addr)=0 Then Begin // Only one address is contained (or left) in string. Add it. Strings.Add(Addr); Addr := \'\'; End Else Begin // There are more than one address in string. Add the first. Strings.Add(Copy(Addr, 1, Pos(\';\', Addr)-1)); // Delete address separator (\';\') Delete(Addr, 1, Pos(\';\', Addr)); End; End;
begin Result := False; If Not NMSMTP1.Connected Then Begin If Not GetEmailUserInfo Then Begin { DONE : Ask user for email info } Try If Not InputQuery(\'Input mail account information\', \'User ID, eg. mbx2345\', FPOP3UserID) Then Raise Exception.Create(ExcepTxt);
If Not InputQuery(\'Input mail account information\', \'SMTP Server, eg. mailbox.tele.dk\', FSMTPServer) Then Raise Exception.Create(ExcepTxt);
If Not InputQuery(\'Input mail account information\', \'User Name, eg. John Doe\', FSMTPDispName) Then Raise Exception.Create(ExcepTxt);
If Not InputQuery(\'Input mail account information\', \'Reply email address, eg. John@doe.com\', FSMTPEmailAdd) Then Raise Exception.Create(ExcepTxt);
{ DONE : Store entered info to next time } SaveEmailUserInfoInRegDB;
Hvad men er du med at ovenstående ikke virker. Har du kørt mit program, dvs. fjernet alt det unødvendige og set hvad der sker?
Dvs. noget i retning af:
procedure TForm1.Button1Click(Sender: TObject); begin NMSMTP1.UserID := \'xxx12345\'; // Brug dine egne data her NMSMTP1.Host := \'pasmtp.tele.dk\'; // Brug dine egne data her NMSMTP1.Port := 25; // Brug dine egne data her
NMSMTP1.PostMessage.ToAddress.Add(\'mora@ready.dk\'); NMSMTP1.PostMessage.ToCarbonCopy.Add(\'Rytter@Hest.com\'); NMSMTP1.PostMessage.Body.Add(\'Hest.\'+#13+#10+ \'Denne mail er sendt fra Delphi med en NMSMTP\');
NMSMTP1.SendMail; end;
Det bør sgu. virke. Det gør det altså hos mig. Jeg har lige prøvet det, så du skulle altså genre ha modtaget en test mail (i fald du staig bruger adressen \'mora@ready.dk).
Jeg var led nok til at skrive til deres support :) De svarede at min fra variabel, højst sandsynlig var invalid. Korrekt...
Jeg tror den indeholder et \"space\" tilsidst :(
___ Most probably the address given in fra was either invalid, had the wrong format, was among those the server didn\'t relay to or the server didn\'t have authentication to relay to.
Jeg har selv et spørgsmål, som ingen har givet et ordentligt svar på endnu (Hvorfor kan jeg ikke loade et TJPEGImage fra en Stream) - måske kan denne support?
30 point til den der først giver mig nummeret/adressen.
Arghh... troede lige at det var et Borland support nummer....
Jeg henviste i øvrigt til spørgsmål http://www.eksperten.dk/spm/85010, som jeg nu har fået (et nedslående) svar på via en Borland nyheds gruppe og derfor lukker.
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.