# Benachrichtigungs Email verschicken über CommandButton



## ITiger (28. Oktober 2002)

Hallo!

Da ich keinen Thread unter Tutorials.de gefunden habe...

Habe folgendes Problem:

Ich möchte ein von mir (über VB) generiertes Logfile (Text) per Command Button an eine (genau eine) Email-Adresse verschicken. Ich möchte, dass der Benutzer nichts anderes machen muss ausser diesen Knopf zu drücken...

Kann mir da jemand helfen?

Danke im Voraus.

ITiger.


----------



## Dario Linsky (28. Oktober 2002)

es gibt aber beiträge (mindestens einen) über die verwendung der mapi-schnittstelle zum verschicken von emails. wenn man das zusammen mit dem einlesen von textdateien kombiniert, hat man schon alles, was man braucht.
http://tutorials.de/showthread.php?s=&threadid=22051


----------



## ITiger (28. Oktober 2002)

...und schonwieder danke!

Gruss

ITiger


----------



## ITiger (28. Oktober 2002)

*Notes*

Ok, also nächstes Problem, selbes Thema:

Jedesmal, wenn ich mein Progrämmli ausführe, dann bekomme ich die Fehlermeldung "Component scrblock.dll or one of its componetns is not correctly registered..."

Habe bereits versucht die dll und msmapi.ocx ins sys32 verzeichnis zu kopieren, aber das bringt (auch nach neustart) nichts... 

Kann es vielleicht damit zusammenhängen, dass:

Die Firma für die ich arbeite verwendet Lotus Notes...
Auf meiner Maschine (Outlook Express) läuft das Dingens. Auf den Rechnern der Firma aber leider nit...
Ebenso verwenden sie die Betriebssysteme: NT & 2000 


Wie kann mein o.g. Problem anders gelöst werden? (Nein Notes kann man nicht ersetzen, die Firma möchte Notes behalten... ausserdem kommt es für die Leute nicht in Frage Outlook Express auf dem Rechner zu installieren...ko*z)

Wie könnte man das Problem lösen wenn beispielsweise gar kein Mailclient auf dem Rechner installiert wäre?

Vielleicht per login auf einem Mailserver...

telnet bla.bla.de 25

usw...???


Danke Euch im Voraus... 

Gruss 

ITiger.


----------



## Dario Linsky (28. Oktober 2002)

die benötigten dll-dateien müssen auch auf dem zielcomputer registriert werden. normalerweise macht man sowas über ein setup, wodurch das ganze automatisiert wird. wenn du die dll selber registrieren willst, musst du auf dos-ebene den befehl *regsvr32* benutzen und als parameter einfach den kompletten dateinamen deiner dll übergeben.
der nachteil bei verwendung der mapi-schnittstelle ist leider, dass diese nur zusammen mit outlook und outlook express funktioniert. die andere möglichkeit wäre, dass du dich mit einem winsock-steuerelement auf einem mailserver anmeldest und sozusagen das stmp-protokoll simulierst. allerdings ist das etwas komplizierter...
eine andere möglichkeit, mit visual basic emails zu verschicken kenn ich leider nicht. der nachteil von visual basic ist nun mal, dass mit auslieferung solcher programme auch etliches von microsoft installiert werden muss.


----------



## ITiger (28. Oktober 2002)

...das ist aber nicht gut...

Ich hab versucht meine dll unter NT mit dem regsrv32 zu registrieren... Leider - wie man sich ja denken kann - gibts das Ding unter NT noch nicht... ich werde es auf eine andere Art probieren...

Ich versuche mal nen ganz billigen Weg über die Sendkey-Methode... werde Notes starten, ein neues Memo machen und dann ein Attatchment auswählen... MANN, WAS EIN SCH....

Sorry aber mir fällt sonst nichts ein, wie ich mein Problem lösen könnte...

Ginge das in C++? Dann würde ichs mal damit versuchen...

Gruss

ITiger. 

P.S.: Und danke für die Mühe die ich Dir gemacht habe...


----------



## Dario Linsky (28. Oktober 2002)

> mit dem regsrv32 zu registrieren


nur für den fall, dass du dich da gerade nicht vertippt hast: der befehl heisst *regsvr32*, und nicht *regsrv32* (bring ich aber selber auch immer durcheinander ).
es gibt auch andere möglichkeiten, um emails zu verschicken. das problem dabei ist meistens nur, dass die programmiersprachen von microsoft immer bestimmte laufzeitpakete benutzen, die man mit installieren muss. beispiele dafür sind unter anderem diese mapi-steuerelemente. wahrscheinlich wirst du unter visual c++ ein ähnliches problem haben. 

als alternative dazu kann ich dir nur die verwendung der vcl-bibliotheken (aus dem c++ builder oder delphi) empfehlen. die werden nämlich direkt in die anwendung mit eincompiliert, anstelle dass ein verweis auf eine externe bibliothek gesetzt wird.



> Und danke für die Mühe die ich Dir gemacht habe...


nichts zu danken. wenn du dir die mühe machst, muss ich das nicht mehr tun.


----------



## ITiger (28. Oktober 2002)

Ok, dann mach ichs mal noch genauer...

Versuche ich über den "Verpackungs&Weitergabe"-Assistent ein Setup für meine App. zu erstellen, dann läuft alles noch wunderbra...

Allerdings bei der Installation auf dem NT-System kommt dann folgernder Fehler:

c:\WINNT\SETUP.LST

Invalid line in setup information file!

Section: Setup1 Files

@MSMAPI32.OCX, $(WinSysPath), $(DLLSelfRgister),$(Shared),6.23.98 11:00:00 PM,137000,6.0.81.69


Nachstehend kommt jetzt meine Setup.lst:



[Bootstrap]
SetupTitle=Install
SetupText=Copying Files, please stand by.
CabFile=ITCubeChecker2.CAB
Spawn=Setup1.exe
Uninstal=st6unst.exe
TmpDir=msftqws.pdw
Cabs=1

[Bootstrap Files]
File1=@VB6STKIT.DLL,$(WinSysPathSysFile),,,6.17.98 11:00:00 PM,102912,6.0.81.69
File2=@COMCAT.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,5.30.98 11:00:00 PM,22288,4.71.1460.1
File3=@STDOLE2.TLB,$(WinSysPathSysFile),$(TLBRegister),,8.18.01 7:00:00 AM,17920,3.50.5014.0
File4=@ASYCFILT.DLL,$(WinSysPathSysFile),,,8.18.01 7:00:00 AM,77824,3.50.5014.0
File5=@OLEPRO32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,8.18.01 7:00:00 AM,106496,5.0.5014.0
File6=@oleaut32.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,8.29.02 11:43:28 AM,569344,3.50.5016.0
File7=@MSVBVM60.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,8.18.01 7:00:00 AM,1388544,6.0.92.37

[IconGroups]
Group0=ITiger's Cube Checker
PrivateGroup0=False
Parent0=$(Programs)

[ITiger's Cube Checker]
Icon1="ITCubeChecker.exe"
Title1=ITiger's Cube Checker
StartIn1=$(AppPath)

[Setup]
Title=ITiger's Cube Checker V 1.0
DefaultDir=$(ProgramFiles)\ITigers Cube Checker
AppExe=ITCubeChecker2.exe
AppToUninstall=ITCubeChecker2.exe

[Setup1 Files]
File1=@MSMAPI32.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),6.23.98 11:00:00 PM,137000,6.0.81.69
File2=@RICHED32.DLL,$(WinSysPathSysFile),,,5.6.98 11:00:00 PM,174352,4.0.993.4
File3=@Richtx32.ocx,$(WinSysPath),$(DLLSelfRegister),$(Shared),6.24.98 12:00:00 AM,203576,6.0.81.69
File4=@msvcrt.dll,$(WinSysPathSysFile),,,8.29.02 11:43:26 AM,323072,7.0.2600.1106
File5=@SCRRUN.DLL,$(WinSysPath),$(DLLSelfRegister),$(Shared),8.18.01 7:00:00 AM,147483,5.6.0.6626
File6=@ITCubeChecker2.exe,$(AppPath),,,10.28.02 11:57:01 AM,98304,0.1.0.29

Mehr Informationen hab ich jetzt dann leider auch nicht mehr...



Danke für den Tipp mit dem regSVR32  Ich hatte es natürlich falsch...
Ausserdem hab ich die MSMAPI32.ocx damit registrieren können, nur will er die ScrBlock.dll immer noch nicht annehmen... 
Immer noch der gleiche Fehler beim Installieren....


Gruss ITiger.


----------



## Dario Linsky (28. Oktober 2002)

> @MSMAPI32.OCX, $(WinSysPath), $(DLLSelfRgister),$(Shared),6.23.98 11:00:00 PM,137000,6.0.81.69



kontrollier nochmal in den eigenschaften der datei alles auf richtigkeit. bei mir stehen da nämlich andere werte drin:
datum: 24. juni 98
zeit: 0:00:00
grösse: 137000 bytes
version: 6.0.81.69

also müsste diese zeile so aussehen:

```
@MSMAPI32.OCX, $(WinSysPath), $(DLLSelfRgister),$(Shared),6.24.98 12:00:00 AM,137000,6.0.81.69
```


----------



## ITiger (28. Oktober 2002)

Laut Dateiinformationen der MSMAPI32.ocx stimmen die Werte, die in der Datei Setup.lst eingetragen sind...

Naja, ich schieb das Problem mal etwas auf und mach erst noch was anderes...

Ich hoffe es posten auch noch andere Leute...

Danke nochmals.

Gruss ITiger.


----------



## Dario Linsky (28. Oktober 2002)

komisch, bei mir stehen andere werte, aber die version ist die gleiche... 

übrigens hab ich gerade mal eine dll geschrieben, mit der du auch ohne mapi-schnittstelle emails verschicken kannst. wenn du interesse hast, sag einfach mal bescheid.


----------



## ITiger (28. Oktober 2002)

Klar hab ich die!

Machst nen Link?

Merci mal.

ITiger.


----------



## Dario Linsky (28. Oktober 2002)

>>> download <<<

die datei einfach ins systemverzeichnis entpacken, mit regsvr32 registrieren und dann kannst du folgendermassen eine email verschicken:

```
Public Declare Function SendEmail Lib "LibEmail" (ByVal Msg As String, ByVal Subject As String, ByVal ToAddr As String, ByVal FromAddr As String, ByVal Server As String) As Boolean
' ...
If SendEmail("Inhalt", "Betreff", "empfaenger@server.net", "absender@server.net", "smtp.server.net") Then MsgBox "Versendet"
```


----------



## ITiger (28. Oktober 2002)

Super, danke, aber kann ich damit auch attatchments anhängen?

Und wenn Du nichts dagegen hast (wär verständlich) kann ich die source von der dll sehen?

Bis warscheinlich morgen... (Arbeite nach Dienst normalerweise nicht mehr  )

ITiger.


----------



## Dario Linsky (28. Oktober 2002)

nein, attachments kann man damit (noch) nicht anhängen. die dll kann auch eigentlich nichts, nur emails verschicken. das hab ich auch nur mal so zwischendurch gemacht, ist nicht mal in besonders gutem stil programmiert. den code kannst du gerne haben, ist allerdings in pascal:

```
library LibEmail;

uses
  IdSMTP;

{$R *.res}

function SendEmail(Msg, Subject, ToAddr, FromAddr, Server: PChar): Boolean; stdcall;
var
  smtp: TIdSMTP;
begin
  Result := False;
  smtp := TIdSMTP.Create(nil);
  smtp.QuickSend(Server, Subject, ToAddr, FromAddr, Msg);
  Result := True;
  smtp.Free;
end;

exports
  SendEmail;

begin
end.
```


----------



## RedDragon (18. Dezember 2003)

*Download dll - Link ist tot*

Hallo,

ich hab versucht, die oben verlinkte dll für den mailversand ohne MAPI runterzuladen, aber der Link ist leider tot. Kann mir jemand eine andere Quelle
nennen oder mir die dll mailen?
Danke für Eure Hilfe

Michael


----------

