Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Autoit Smtp Mail versenden

Frage Entwicklung

Mitglied: pytrelooc

pytrelooc (Level 1) - Jetzt verbinden

15.01.2014, aktualisiert 15:36 Uhr, 5308 Aufrufe, 8 Kommentare

Hallo zusammen,

ich versuche gerade eine E-Mail über einen Smtp-Server zu versenden.
Hierzu habe ich folgenden Code benutzt:


01.
        Local $s_SmtpServer = "XXXXXXX" 
02.
	Local $s_FromName = "XXXXXX" 
03.
	Local $s_FromAddress = "XXXXX" 
04.
	Local $s_ToAddress = "XXXXX" 
05.
	Local $s_Subject = "Das ist ein Test" 
06.
	Local $as_Body[2] 
07.
	$as_Body[0] = "AD Email Text" 
08.
	$as_Body[1] = "Zeile2" 
09.
	Local $Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body,@ComputerName ,-1,1) 
10.
	Local $err = @error 
11.
	If $Response = 1 Then 
12.
		MsgBox(0, "Success!", "Mail sent") 
13.
	Else 
14.
		MsgBox(0, "Error!", "Mail failed with error code " & $err) 
15.
	EndIf
So funktioniert das Senden der Mail, wenn ich jedoch das @computerName weglasse durch welches ich ein Protokoll des Sendeverlaufs bekomme dann schlägt das Senden der Mail fehl. Woran liegt das ?

Vielleicht könnt ihr mir weiterhelfen

Mit freundlichen Grüßen

pytrelooc

Mitglied: colinardo
LÖSUNG 15.01.2014, aktualisiert um 15:36 Uhr
Hi pytrelooc,
wenn du für den Parameter einen leeren String als ("") angibst wird von der Funktion automatisch der Computername verwendet.

Hier sind die ersten Zeilen der Funktion, dort siehst du das wenn man einen leeren String übergibt die Funktion automatisch den Computernamen auf die Variable setzt:
01.
Func _INetSmtpMail($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_helo = "", $s_first = " ", $b_trace = 0) 
02.
	If $s_SmtpServer = "" Or $s_FromAddress = "" Or $s_ToAddress = "" Or $s_FromName = "" Or StringLen($s_FromName) > 256 Then Return SetError(1, 0, 0) 
03.
	If $s_helo = "" Then $s_helo = @ComputerName 
04.
... 
05.
...
komplett auslassen kannst du den Parameter nur, wenn du keine Parameter nach diesem definierst.

Falls du mal eine Mail-Funktion benötigst die SMTP-Authentifizierung und TLS-Verschlüsselung unterstützt guckst du hier
01.
; --- Mail Einstellungen -----  
02.
$MAILFROM = "absender@email.de" 
03.
$MAILTO = "empfänger@email.de" 
04.
$MAILFROMNAME = "Absendername" 
05.
$MAILBODY = "Der Body der Nachricht" 
06.
$MAILSUBJECT = "Der Betreff der Nachricht" 
07.
$MAILATTACHMENT = "" 
08.
$MAILSERVER = "SMTP.SERVER.DE" 
09.
$SMTPUSER = "SMTPUSERNAME" 
10.
$SMTPPASS = "SMTPPASSWORD" 
11.
$SMTPPORT = "25" 
12.
$SMTPUSESSL = 1 
13.
; ------------------------------ 
14.
 
15.
; --- Send Mail 
16.
_INetSmtpMailCom($MAILSERVER,$MAILFROMNAME,$MAILFROM,$MAILTO,$MAILSUBJECT,$MAILBODY,$MAILATTACHMENT,"","","Normal",$SMTPUSER,$SMTPPASS,$SMTPPORT,$SMTPUSESSL) 
17.
 
18.
 
19.
; Variables for Function _INetSmtpMailCom 
20.
;========================================= 
21.
;~ $SmtpServer = ""                 ; address for the smtp-server to use - REQUIRED 
22.
;~ $FromName = "User"               ; name from who the email was sent 
23.
;~ $FromAddress = ""                ; address from where the mail should come 
24.
;~ $ToAddress = ""                  ; destination address of the email - REQUIRED 
25.
;~ $Subject = "testsubject"         ; subject from the email - can be anything you want it to be 
26.
;~ $Body = "This Is The Body"       ; the messagebody from the mail - can be left blank but then you get a blank mail 
27.
;~ $AttachFiles = ""                ; the file you want to attach- leave blank if not needed 
28.
;~ $CcAddress = ""                  ; address for cc - leave blank if not needed 
29.
;~ $BccAddress = ""                 ; address for bcc - leave blank if not needed 
30.
;~ $Importance = "Normal"           ; Send message priority: "High", "Normal", "Low" 
31.
;~ $Username = ""                   ; username for the account used from where the mail gets sent - REQUIRED 
32.
;~ $Password = ""                   ; password for the account used from where the mail gets sent - REQUIRED 
33.
;~ $IPPort = 25                     ; port used for sending the mail 
34.
;~ $ssl=0                           ; put to 1 if using https 
35.
;========================================= 
36.
 
37.
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0) 
38.
    Local $objEmail = ObjCreate("CDO.Message") 
39.
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>' 
40.
    $objEmail.To = $s_ToAddress 
41.
    Local $i_Error = 0 
42.
    Local $i_Error_desciption = "" 
43.
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress 
44.
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress 
45.
    $objEmail.Subject = $s_Subject 
46.
    If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then 
47.
        $objEmail.HTMLBody = $as_Body 
48.
    Else 
49.
        $objEmail.Textbody = $as_Body & @CRLF 
50.
    EndIf 
51.
    If $s_AttachFiles <> "" Then 
52.
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";") 
53.
        For $x = 1 To $S_Files2Attach[0] 
54.
            $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x]) 
55.
            ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach & @LF & '>Error code: ' & @error & @LF) ;### Debug Console 
56.
            If FileExists($S_Files2Attach[$x]) Then 
57.
                $objEmail.AddAttachment ($S_Files2Attach[$x]) 
58.
            Else 
59.
                ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF) 
60.
                SetError(1) 
61.
                Return 0 
62.
            EndIf 
63.
        Next 
64.
    EndIf 
65.
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
66.
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer 
67.
    If Number($IPPort) = 0 then $IPPort = 25 
68.
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort 
69.
    ;Authenticated SMTP 
70.
    If $s_Username <> "" Then 
71.
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 
72.
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username 
73.
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password 
74.
    EndIf 
75.
    If $ssl Then 
76.
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True 
77.
    EndIf 
78.
    ;Update settings 
79.
    $objEmail.Configuration.Fields.Update 
80.
    ; Set Email Importance 
81.
    Switch $s_Importance 
82.
        Case "High" 
83.
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High" 
84.
        Case "Normal" 
85.
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal" 
86.
        Case "Low" 
87.
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low" 
88.
    EndSwitch 
89.
    $objEmail.Fields.Update 
90.
    ; Sent the Message 
91.
    $objEmail.Send 
92.
    If @error Then 
93.
        SetError(2) 
94.
    EndIf 
95.
    $objEmail="" 
96.
EndFunc   ;==>_INetSmtpMailCom
Grüße Uwe
Bitte warten ..
Mitglied: pytrelooc
15.01.2014 um 14:20 Uhr
Hallo,

danke für deine Hilfe !
bedeutet das es gibt keine Möglichkeit diesen Parameter wegzulassen oder habe ich dich falsch verstanden ?
Mit Passworteingabe usw. soll es nicht sein da der User mit einem klick diese Mail versenden soll (mit vorgefertigtem Text usw.) und nichts davon mitbekommen soll.
Dies habe ich schon alles gelöst (über ActiveDirectory die Mails ausgelesen usw). Das einzige was der User noch mitbekommt ist nun dieses Protokollfenster was jedoch nicht so sein soll.

Grüße
Bitte warten ..
Mitglied: colinardo
LÖSUNG 15.01.2014, aktualisiert um 15:36 Uhr
Zitat von pytrelooc:
bedeutet das es gibt keine Möglichkeit diesen Parameter wegzulassen oder habe ich dich falsch verstanden ?
einfach wie geschrieben einen leeren String übergeben => ""
ansonsten kann man sich die Funktion zurechtstutzen wenn das benötigt wird...
Bitte warten ..
Mitglied: pytrelooc
15.01.2014 um 14:32 Uhr
Wenn ich das so mache funktioniert das aber nicht.
Oder wie muss ich den String übergeben ?

01.
        Local $s_SmtpServer = "XXXXXXX" 
02.
	Local $s_FromName = "XXXXXX" 
03.
	Local $s_FromAddress = "XXXXX" 
04.
	Local $s_ToAddress = "XXXXX" 
05.
        Local $s_helo = "" 
06.
	Local $s_Subject = "Das ist ein Test" 
07.
	Local $as_Body[2] 
08.
	$as_Body[0] = "AD Email Text" 
09.
	$as_Body[1] = "Zeile2" 
10.
	Local $Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_helo) 
11.
	Local $err = @error 
12.
	If $Response = 1 Then 
13.
		MsgBox(0, "Success!", "Mail sent") 
14.
	Else 
15.
		MsgBox(0, "Error!", "Mail failed with error code " & $err) 
16.
	EndIf
Bitte warten ..
Mitglied: colinardo
LÖSUNG 15.01.2014, aktualisiert um 15:36 Uhr
nach deiner obigen Benutzung sollte es so aber gehen.. ansonsten hast du eventuell eine ältere AutoIT-Version ?
01.
Local $Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, "",-1,1) 
Bitte warten ..
Mitglied: pytrelooc
15.01.2014 um 15:05 Uhr
Ah das "-1,1" hat gefehlt, jedoch erscheint nun immer noch dieses SmtP-Trace Fenster.
Kann man das irgendwie entfernen ?
Bitte warten ..
Mitglied: colinardo
LÖSUNG 15.01.2014, aktualisiert um 15:36 Uhr
Zitat von pytrelooc:

Ah das "-1,1" hat gefehlt, jedoch erscheint nun immer noch dieses SmtP-Trace Fenster.
Kann man das irgendwie entfernen ?

klar, indem du den letzten Parameter weg lässt , also die letzte 1

sieh dir doch mal die Doku zur Funktion an:
http://www.autoitscript.com/autoit3/docs/libfunctions/_INetSmtpMail.htm
Bitte warten ..
Mitglied: pytrelooc
15.01.2014 um 15:36 Uhr
Die habe ich mir angesehen jedoch konnte ich das dort nich rauslesen.
Auf jeden fall funktioniert jetzt alles wie es soll.
Vielen Dank für deine Hilfe !

Gruß

Pytrelooc
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Outlook & Mail
gelöst Office 365 - SMTP - automatisierte Mail versenden - "Gerät freigeben?!" (4)

Frage von KMUlife zum Thema Outlook & Mail ...

E-Mail
gelöst BLAT zum Mail versenden. Fehler für mich nicht lösbar (25)

Frage von 130217 zum Thema E-Mail ...

Outlook & Mail
gelöst E-Mail versenden mit PowerShell (6)

Frage von 112Timo zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...