Hallo ich möchte, dass sich ein Anwender meines Programms bei mir per e-mail registrieren kann. Ich frage seine Daten und seine e-mail Adresse ab. Wer kann helfen? Vielen Dank.
Announcement
Collapse
No announcement yet.
Wie läßt man eine Anwendung per mail registrieren ?
Collapse
X
-
Hallo,
du solltest alle Informationen, die du brauchst, vom Anwender in einem Formular ausfüllen lassen.
Anschließen packst du das alles in einen Text und fügst diesen entweder als Datei-Anlage oder auch als normalen (body-)Text einer E-Mail hinzu.
Wie man mit Delphi-eigenen Komponenten eine E-Mail versendet, kannst du hier im Forum massenweise finden.
Gruß Ul
-
Moin Karl-Heinz,<br>in der Komponentenpalette findest Du auf dem FastNet Register die TNMSMTP Komponente. Damit lassen sich prima eMails verschicken. In der Hilfedatei finden sich auch Beispiele.<br>Achtung: Hier im Forum wurden die Komponenten schon so manchesmal mies gemacht. Ich weiß aber bis heute nicht warum. In meinen Anwendungen laufen sie tadellos.<br>Jens Schuman
Comment
-
Hallo,
Zitat aus einem anderen Thread:
<pre>
die Komponente zum Mailsversenden heisst "TNMSMTP" die einfachste Möglichkeit ist folgende:
NMSMTP1.PostMessage.FromAddress := Edit1.Text; // Absenderadresse
NMSMTP1.PostMessage.FromName := Edit2.Text; // Absendername
NMSMTP1.PostMessage.ToAddress.Add(Edit3.Text); // Empfänger(-Liste)
NMSMTP1.PostMessage.Subject := Edit4.Text; // Betreff
NMSMTP1.PostMessage.Body.AddStrings(Memo1.Lines); // Mailtext
NMSMTP1.PostMessage.Attachments.AddStrings(ListBox 1.Items); // Dateiliste
NMSMTP1.Host := 'mail.telehaus.net'; // Mailserver (SMTP) String
MSMTP1.Port := 25; // 25 Standard SMTP-Port
NMSMTP1.Connect; // Verbindung zum Mailserver herstellen
NMSMTP1.SendMail; // Mail absenden
NMSMTP1.Disconnect; // Verbindung zum Mailserver beenden
</pre>
Gruß Ul
Comment
-
Hallo Männer,
genau das gleiche Beispiel habe ich schon probiert. Wahrscheinlich scheitere ich an meinem Provider der eine "Authentisierung" verlangt. Nun könnte ich micht erst am POP3 Server anmelden um anschloeßend meine maiö zu versenden. Das kann ich aber nicht von einem Anwender meines Programms erwarten. Ich fürchte, dass ich hier einen grundsätzlichen Denkfehler mache-oder
Comment
-
Hi,
SMTP ist ein Protokell, welches grundsätzlich authentifizierunglos arbeitet. Die damit mögliche missbräuchliche Nutzung hat zu dem Workarround vieler Provider geführt, dass man sich erst am POP-Server anmelden muss (sog. POP before send ), um eine gültige Authentifizierung durchzuführen. Danach wird SMTP-Port des Zielservers für eine gewisse Zeit (i.d.R. 10-15min ) 'freigeschaltet'. Du machst also keinen Denkfehler.
Gruß
Gesin
Comment
-
Hallo Gesine,
ich habe mir schon soetwas gedacht. Wie löse ich jetzt mein Problem ? ( Registrierung durch einen Anwender ). Muß ich Outlook voraussetzen ? Wie funktioniert das mit Express ? Das kann doch nicht so schwierig sein, da alle "großen" Softwarehersteller mit einer e-mail Registrierung arbeiten. Aber wie geht das
Comment
-
Hi Karl-Heinz,
Die gehen alle davon aus, dass ein korrekt eingerichteter Mail-Account auf dem Zielrechner installiert ist.
Dann funktioniert z.B. folgendes ( Startapplication ist lediglich eine Kapselung von Shellexecute ):
StartApplication('mailto:[email protected]?bcc=TES@ba cklog.de;[email protected]','>Mail an den Autor' );
<pre>
procedure StartApplication( SrcFile, sParas: String );
var
Buffer: array[0..255] of Char;
Options: array[0..255] of Char;
WorkDir, msg: String;
Code: Integer;
begin
if SrcFile <> '' then
Begin
for Code := 1 to Length( SrcFile ) do
Buffer[Code-1] := SrcFile[Code];
Buffer[Length( SrcFile )] := #0;
end;
if sParas <> '' then
Begin
for Code := 1 to Length( sParas ) do
Options[Code-1] := sParas[Code];
Options[Length( sParas )] := #0;
end;
WorkDir := Env.TempDir;
if sParas <> '' then
Code := ShellExecute( 0, 'open', Buffer, Options, PChar( WorkDir ), SW_SHOWNORMAL )
else
Code := ShellExecute( 0, 'open', Buffer, Nil, PChar( WorkDir ), SW_SHOWNORMAL );
if Code <= 32 then
Begin
Case Code of
0: msg := 'Zuwenig Speicherresourcen um die Anwendung zu starten.';
ERROR_BAD_FORMAT: msg := 'Ungültige Zielapplikation. Entweder kein Windowsprogramm oder Fehler in der EXE-Datei.';
SE_ERR_ACCESSDENIED: msg := 'Das Betriebssystem hat den Zugriff auf die angegebene Datei verweigert.';
SE_ERR_ASSOCINCOMPLETE: msg := 'Die Dateiverküpfung ist entweder unvollständig oder ungültig.';
SE_ERR_DDEBUSY: msg := 'Die DDE-Transaktion konnte nicht ausgeführt werden, da noch andere DDE-Transaktionen durchgeführt werden.';
SE_ERR_DDEFAIL: msg := 'Die DDE-Transaktion schlug fehl.';
SE_ERR_DDETIMEOUT: msg := 'Keine Rückmeldung der DDE-Transaktion.';
SE_ERR_DLLNOTFOUND: msg := 'Ungültige DLL. Eine der DLLs, die benötigt wurde um die Anwendung zu starten, war beschädigt.';
SE_ERR_FNF: msg := 'Datei wurde nicht gefunden';
SE_ERR_NOASSOC: msg := 'Die Datei ist mit keiner Anwendung verknüpft.';
SE_ERR_OOM: msg := 'Zuwenig Speicher um die zugehörige Anwendung zu starten.';
SE_ERR_PNF: msg := 'Verzeichnis wurde nicht gefunden';
SE_ERR_SHARE: msg := 'Fehler beim Zugriff auf gemeinsam genutzte Datei. Datei ist wahrscheinlich gesperrt.';
end;
Messagedlg( msg, mtError, [mbCancel], 0 );
End;
end;
</pre>
Du müsstest natürlich in der Kapselung des Shellexecute-Befehls, die eine oder andere Anpssung an deine Umgebung vornehmen. Auch weis ich nicht genau, ob die Übergabe des Mailtextes 100% funktioniert. Da bietet sich dann auch etwas 'spielen mit dem Aufrufparameter an. Du findest unter www.teamone.de das Kompendium Selfhtml, welches dir diesbezgl. weiterhilft.
Gruß
Gesin
Comment
-
Hallo, ersteinmal vielen Dank für Eure Mühe. Als Anfänger verstehe ich aber nicht alles was dort abläuft. Beim Aufruf der Procedure mäckert er schon inkompatible Typen an. TObjekt / String. Muß ich [email protected] durch eigene Adressen ersetzen
Comment
-
Hi,
Narürlich musst Du dort die gewünschten Empfänger angeben. Nach Aufruf von Startapplication sollte dein MailClient auftauchen. Als Empfänger sollte darin bereits [email protected] eingetragen sein und Blindcopies sollten ebenfalls an [email protected] gehen. Das sogar zweimal ( Also ein bischen doof gewwählt meine Blindcopy-Empfänger... ). Im Textfeld deines Mailclients solte Mail an den Autor stehen.
Aus der Anweisungszeile WorkDir := Env.TempDir musst du z.B. WorkDir := 'C:\Temp' machen. In den Uses Angaben deiner Unit muss ShellAPI eingefügt werden. Dann muss es funktionieren.
Wenn du Startapplication keinen String bzw. Stringvariable übergibst, dann bekommst du natürlich deine beschriebene Fehlermeldung ;-)
Gruß
Gesin
Comment
-
Hi Karl-Heinz,
Die Frage nach der Vertrauenswürdigkeit von SW-Herstellern muss sich letztendlich jeder selbst beantworten. Mit 'vollautomatisch' verschickten Mails gab's jedoch gerade in letzter Zeit den einen oder anderen Vorfall. Damit meine ich weniger die nachgewiesene und illegale Datensammelwut des einen oder anderen Herstellers, sondern fühle mich irgendwie stark an das Stichwort Viren erinnert.
In diesem Zusammenhang gehört 'ein Klick mehr' nicht nur zum guten Ton und wirkt vetrauensbildend, sondern senkt die Komfortabilität ja nun wirklich nicht in Bodenlose.
Gruß
Gesin
Comment
Comment