E-Mail versenden ohne Zusatzprogramm Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
divanebaba
Posts: 804
Joined: 20 Dec 2016, 03:53
Location: Diaspora

E-Mail versenden ohne Zusatzprogramm

16 May 2017, 08:57

Hallo Leute.

Ich versuche nun seit einigen Tagen immer wieder eine einfache E-Mail ohne Standard-E-Mailprogramm zu senden.
mailto:... ist zwar funktionell, aber ich möchte das Versenden der E-Mails quasi unsichtbar im Hintergrund ablaufen lassen.
Ich habe einige Möglichkeiten ausprobiert, doch vermutlich verhindern meine Rechnervoreinstellungen den Erfolg.

Ich habe es mit blat.exe, sendmail.exe einige COM-Versionen, CDO und zuletzt mit Powershell versucht.
Bzgl. Powershell, habe ich folgenden Forumbeitrag genutzt:
https://autohotkey.com/boards/viewtopic ... powershell

Meine Powershell ist aktiviert, mein Google-Account auf niedrige Sicherheitsstufe gesetzt, doch keine Mail geht durch.
Als Testobjekt nutze ich mein Googleaccount. Später soll eine Arbeitgeberadresse genutzt werden.
Um den selben Code nicht mehrfach zu posten, hier nur ein Auszug aus dem oben genannten Forumbeitrag.
Für den Port habe ich, statt 587, auch 25 und 465 bereits erfolglos eingesetzt.
Da alle vollauf begeistert sind, vermute ich, daß es bei denen funktioniert.
Bei mir hingegen stimmt irgendetwas nicht.

Ich habe Win7 64bit, AHK 1.1.25.01 und als Rechner einen Dell M4500 mit i7 Q840 Prozessor. Ich nutze die Windows Firewall und Microsoft Security Essentials.

Das Scripting, meine ich, per Internetoptionen ebenfalls freigegeben zu haben.

Langsam macht das kein Spass mehr, doch vielleicht wird mir jemand helfen können.
Kann mir bitte jemand auf die Sprünge helfen?
Last edited by divanebaba on 19 May 2017, 13:41, edited 1 time in total.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: E-Mail versenden ohne Zusatzprogramm

16 May 2017, 10:11

Just 4 the records: wenn ich es richtig verfolgt habe, basierte der von dir genannte thread auch mit auf diesem [hier] (wobei dort bereits mal alle optionen/tools quer durch den garten diskutiert wurden).

Statt so ..
new-object Net.Mail.SmtpClient("%smtpserver%", 587)
... könnte vll das gehn, oder?
new-object Net.Mail.SmtpClient(smtpserver, 587)

Dieser thread Ist entgegen der erwartung nicht auf outlook beschränkt ...
https://autohotkey.com/board/topic/8911 ... 5-outlook/
I wonder if anyone has successfully used the code below for Outlook / Office 365. This works for me for Gmail and GMX but ... .
Note that this is a way to send emails bypassing your current email-application. So it does not use OE, Outlook, or any email client. What I am looking for ...
Gefunden [hiermit]
User avatar
divanebaba
Posts: 804
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: E-Mail versenden ohne Zusatzprogramm

16 May 2017, 11:40

Hallo.

Zunächst einmal vielen Dank für die Antwort. Wie befürchtet, half es mir nicht wirklich weiter.
Ich habe es ohne Anführungs- und Ausführungszeichen und mit den Portnummern 25 und 465 erfolglos versucht.

Code: Select all

new-object Net.Mail.SmtpClient(smtpserver, 587)
statt
new-object Net.Mail.SmtpClient("%smtpserver%", 587)
Ich vermute eine Rechnereinstellung, die den Datenfluss blockiert.
So etwas geniales, wie die serienmäßig ausgeschaltete Powershell.

Ich habe gerade mailsend1.19.exe ausprobiert. Ebenfalls ohne Erfolg.

Sackl Zement. Ich bin so unwissend, mir gehen sogar die Fragen aus.

Für Anregungen bin ich aber weiterhin dankbar.
Last edited by divanebaba on 16 May 2017, 17:26, edited 1 time in total.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: E-Mail versenden ohne Zusatzprogramm

16 May 2017, 11:50

:?: Könntest du bitte noch den restlichen code posten?
Evtl ist der fehler dann doch in einer deiner "auslassungen" ??

:?: :?: :?:
User avatar
divanebaba
Posts: 804
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: E-Mail versenden ohne Zusatzprogramm

16 May 2017, 12:06

Hier ist der gesamte Code.
Kopiert aus Beitrag
https://autohotkey.com/boards/viewtopic ... powershell
Und so sieht die Eingabemaske aus.
Oben gebe ich dann noch die Zieladresse an und ankommen tut bei mir gar nichts.
Das einzig Veränderte am Code sind die Zugangsdaten, und bei FileAppend habe ich mit Codierungen experimentiert. Hier steht noch UTF-8 drin.
Das Originalskript verzichtet auf die Codierungsangabe.

Ich bin total erschöpft vom Ausprobieren. :|
Last edited by divanebaba on 27 May 2017, 15:33, edited 2 times in total.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: E-Mail versenden ohne Zusatzprogramm

16 May 2017, 15:39

PowerShell ist nicht so meine baustelle, aber wie wärs wenn du den "hidden" parameter heraus nimmst? Evtl gibts da ne fehlermeldung zu sehn?! Den FileDelete des ps1-scripts rausnehmen und checken ob der inhalt des scripts wie erwartet aussieht.

Btw, da du eh final ohne guinutzung senden willst, gabs das script nicht lauffähig, aber ohne gui, bereits in dem von mir genannten thread? Vll wurde das script danach "verschlimmbösert"??!
User avatar
divanebaba
Posts: 804
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: E-Mail versenden ohne Zusatzprogramm

16 May 2017, 17:23

Hallo BoBo.

Ich habe den Hidden-Parameter herausgenommen, und es sieht schrecklich aus..
Ich habe mich richtig erschrocken.
Da wird scheinbar kein einziger Befehl richtig ausgeführt.

Die vom Skript erstellte Datei, namens email.ps1, hat folgenden Inhalt:
Die Tabs ab der zweiten Zeile sind in der Datei vorhanden. Diese sind nicht später hinzugekommen. Geändert sind jetzt nur die E-Mail-Adressen und natürlich das Passwort.

Hey BoBo, Dein Link How To Send Emails From The Commandline In Windows (Without Extra Software) scheint mir einen Ausweg zu liefern.

Dort sind die Befehle für das Powerscript anders aufgebaut.

von howtogeek.com
BoBo, ich werde Deinem Hinweis folgen. Das wird etwas dauern, doch ich gebe Bescheid.
Für Deine schnelle und kompetente Antwort, ist Dir mein Dank schon mal sicher. :HeHe: :HeHe:
Last edited by divanebaba on 27 May 2017, 15:34, edited 2 times in total.
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: E-Mail versenden ohne Zusatzprogramm

16 May 2017, 17:52

Ich würde dir empfehlen alle Zeilen in denen nur ein "" steht ( z. B. $message.CC.Add("") ) zu entfernen.
Zudem fehlen dir bei deiner Adresse $smtp = new-object Net.Mail.SmtpClient(smtp.gmail.com, 587) die Anführungszeichen.
Recommends AHK Studio
User avatar
divanebaba
Posts: 804
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: E-Mail versenden ohne Zusatzprogramm

16 May 2017, 18:59

### Nachträgliche Korrektur: Ich habe zwei Bildnachweise löschen müssen, da ich die Bilder von Google nach Pinterest verschoben habe und dabei durcheinandergekommen bin. Die Fehlermeldungen sahen sich, trotz leichter Unterschiede, so ähnlich, daß ich, um Fehlinformationen zu vermeiden, beide gelöscht habe. Da die Fehlermeldungen eh nicht wirklich zur Lösung beigetragen haben, wäre alles andere, vom Aufwand her, nicht vertretbar gewesen. Den Textinhalt habe ich ebenso leicht geändert, mit Rücksicht, die sich darauf beziehenden Kommentare nicht als inhaltslos darzustellen. ###

Hallo nnnik und hallo BoBo.

Zunächst einmal der Hinweis von BoBo. Code below ist von howtogeek.com.
Fehlermeldung, mit Port 465, sieht so aus:
## GELÖSCHT

Fehler mit Port 25:
## GELÖSCHT

Fehler mit Port 587:
Und nun zu Dir nnnik. Das Entfernen von "Leerzeichen" hat schon mal die Fehlerquote drastisch gesenkt. Das Setzen der Anführungszeichen hat die Fehleranzahl auf einen einzigen Fehler reduziert. Na immerhin.
Die Powershell ist kaum wiederzuerkennen.

Mit folgendem Inhalt:
sieht die Powershell folgendermaßen aus:
Die Fehleranzahl ist deutlich reduziert, aber solche Fehler sind mir bei weitem zu hoch. Die Lehrerempfehlung hat mich in den Ruhestand befördert, noch bevor ich loslegen konnte. Das ist aber ein anderes Thema.

Der Fehler unter Port 587, bei BoBo's Ansatz, sieht mir interessant aus.
Dort steht:"Must issue a STARTTLS command first."
Interessant, aber zu hoch für mich.

Hat nicht gänzlich funktioniert, aber immerhin habt ihr beiden mir reichlich weitergeholfen.
Ich werde wohl noch googeln müssen, wie ein Weltmeister, aber das Ziel scheint mir jetzt greifbar.

Ich wollte auf Powershell 3.0 updaten, aber, meine Güte, war die Anleitung kompliziert. Meine Powershell ist v1.0.
Wäre echt peinlich, wenn alle Codes einwandfrei sind und der Fehler einfach nur an meiner alten Powershellversion liegt.
Das Updaten wird, bei der komplizierten Anleitung, aber lange brauchen, denke ich.
Last edited by divanebaba on 27 May 2017, 15:58, edited 2 times in total.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: E-Mail versenden ohne Zusatzprogramm

16 May 2017, 23:49

Moin, das STARTTLS liefert wohl den maßgeblichen fehler. Zum beispiel wird bei der konfiguration von outlook beim zugriff auf gmail zur verschlüsselung SSL, TLS oder "Auto" ausgewählt. Was da jetzt genau im argen liegt verschliest sich mir (ich kann deine screenshots auf dem tablet nicht sehen), aber der port 587 scheint wohl der korrekte zu sein. "Encrytion TLS powershell" zu googlen bietet hierzu jedoch einiges. Wie zb [dies] hier. Da wird bei den kommentaren auch blocking von smtp durch den eigenen virenscanner und das testen mittels telnet angesprochen.

Good luck :)
User avatar
divanebaba
Posts: 804
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: E-Mail versenden ohne Zusatzprogramm  Topic is solved

17 May 2017, 00:40

Hallo Leute. Hallo BoBo. Hallo nnnik.

Ich habe es geschafft. Es ist ein ganz dummer Fehler meinerseits gewesen.
Bevor ich euch zuschwafle, kurz die Lösung.

L Ö S U N G : NEUSTE VERSION VON MICROSOFT- POWERSHELL. Dann klappt das auch mit der E-Mail. :crazy: :crazy:

Ich hatte die Microsoft Powershell im Auslieferungszustand, in der Version 1.0, vorliegen.
Diese verfügt wohl angeblich nicht über eigene Mail-Befehle, so daß immer auf Net-Framework zurückgegriffen wird.
Das Updaten auf Powershell v2.0 oder gar v3.0 scheint, den Anleitungen von Microsoft nach, gar nicht so einfach zu sein.
Ganz anders dagegen die neuste Version von Microsoft Powershell, die aktuell als Version 5.1 vorliegt. Diese lässt sich ganz einfach installieren.

Ich schreibe absichtlich immer Microsoft Powershell, denn Powershells gibt es mehrere. Ich bin da ganz durcheinander gekommen. Also nach der Microsoft Powershell suchen.

Desweiteren ist es, wie nnnik es mir riet, notwendig, die Leerzeichen wegzulassen, wenn diese eh nicht ausgefüllt werden.
Bei Googlemail muss man noch den Zugriff per Programm freigeben. Dazu fand ich diesen Link:
https://myaccount.google.com/lesssecureapps

Ich werde jetzt keinen Code einstellen, denn die oben eingestellten Codes sollten alle funktionieren, insofern eure Microsoft Powershell "up to date" ist.

Hallo BoBo. Vielen Dank für Deine Mühen. Hättest Du mir nicht geraten, den Hidden-Parameter zu entfernen, ich hätte es wohl nicht mehr weiterverfolgt.

In Deckung. Jetzt werden die Kunden mit Bestätigungs-E-Mails bombardiert.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: E-Mail versenden ohne Zusatzprogramm

17 May 2017, 01:35

Der vollständigkeit halber (für nachfolgende generationen) ... :idea:

Das ...
Meine Powershell ist aktiviert, mein Google-Account auf niedrige Sicherheitsstufe gesetzt, doch keine Mail geht durch.
... und das, war demnach unterschiedlich angedacht.
Bei Googlemail muss man noch den Zugriff per Programm freigeben.
Wie schon vorab verlinkt - daß ist es, was Google als einstellung vor einem zugriff durch "externe" erwartet:
Mein Konto > Anmeldung und Sicherheit > Verbundene Apps & Websites

Weniger sichere Apps zulassen [aktivieren|deaktivieren]
Einige Apps und Geräte nutzen weniger sichere Anmeldetechnologien. Dadurch könnte Ihr Konto angreifbar werden. Sie können den Zugriff für diese Apps deaktivieren (empfohlen) oder sie trotz des Risikos verwenden.
BTW, respekt für deine beharrlichkeit !!! :bravo: :thumbup:
User avatar
divanebaba
Posts: 804
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: E-Mail versenden ohne Zusatzprogramm

23 Jun 2017, 02:38

Hallo Leute.
Mein Programmcode war vorbereitet, und die E-Mail-Funktion sollte eingebunden werden. Dummerweise hatte ich soviele Testskripte, daß ich nicht mehr wußte, welche von diesen funktioniert haben. Nach peinlichen, weil stundenlangem Try & Error, habe ich aus einer Vorlage einen funktionierenden Code erstellt.

Um den armen Bildungsgeprellten, damit sind jene Migrantenkinder gemeint, die von der Lehrerempfehlung von Gymnasien ferngehalten wurden, meine gerade erlebten Mühen zu ersparen, hier ein funktionierender Code.

Code: Select all

fromaddress = [email protected]		; Versender volle E-Mail-Adresse
smtpserver 	= smtp.gmail.com
username	= Sender				; Versender ohne @...
password	= ********				; Passwort für Deinen E-Mail-Account
EmailTo = [email protected]		; Empfänger volle E-Mail-Adresse
Message = This is the first line of the message.`nThis is the secondline.`Last not least, the third line.`n`nBest regards.`n`nDivanedepp
Subject = Betreffzeile - Subject line

FileDelete, email.ps1				; delete powershell script in case it exists (it shouldnt)
FileAppend, 
(
$EmailFrom = "%fromaddress%"
$EmailTo = "%EmailTo%"
$Subject = "%Subject%"
$Body = "%Message%"
$SMTPServer = "%smtpserver%"
$SMTPClient = New-Object Net.Mail.SmtpClient("$SmtpServer", "587")
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("%username%", "%password%")
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
), email.ps1, CP1252	

run, powershell.exe -windowstyle hidden -ExecutionPolicy Bypass -File email.ps1 

sleep 2000
FileDelete, email.ps1				; delete powershell script
return
In den Original-Beispielen konnten noch CC, BCC und ein Anhang eingebunden werden. Interessierte können hierzu in oberen Beiträgen Information finden.
Zu beachten ist, daß ich hier den Windows-Zeichensatz CP1252 nutze. Der griechische Zeichensatz ist, laut Wikipedia, CP1253, der türkische CP1254 und hebräisch CP1255 etc.
Ich nutze eine deutsche Version Win7 64bit, sowie das Original (!!!) der Microsoft Powershell v5.1.

Die Maileinstellungen sind für Googlemail, wobei, wie in oberen Beiträgen bereits erwähnt, bei Google, das Konto für automatischen Zugriff freigegeben werden muss.
Wenn euch dieser Beitrag gefällt, eure Daumen könnt ihr euch sonstwohin stecken. Ich nehme nur euer Bestes, also euer Bares, per PayPal.
Last edited by divanebaba on 24 Jun 2017, 08:09, edited 1 time in total.
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: E-Mail versenden ohne Zusatzprogramm

23 Jun 2017, 05:19

Huhu zusammen,

sorry, wenn es mein Beispiel bereits irgendwo geben sollte, denn auch ich habe diesen
Teil nur von... ja... irgendwo her. Er ist also nicht auf meinem Mist gewachsen, funktioniert aber.

Code: Select all

send_email(Text, Attachments, ToAddress)
{
    Global MAIL_FROMADDRESS
    Global MAIL_USERNAME
    Global MAIL_SERVERADDRESS
    Global MAIL_SERVERPASSWORD
    Global MAIL_SERVERPORT
    Global MAIL_USE_SSL
    Global MAIL_USE_STD_PORTS

    Gui,12: submit, nohide
    ComObjError(false)
    pmsg         := ComObjCreate("CDO.Message")
    pmsg.From    := MAIL_FROMADDRESS
    pmsg.To      := ToAddress
    pmsg.BCC     := ""
    pmsg.CC      := ""
    pmsg.Subject := "Nachricht vom AHK Script."

    ;You can use either Text or HTML body like
    pmsg.TextBody 	:= Text
    ;OR
    ;pmsg.HtmlBody := "<html><head><title>Hello</title></head><body><h2>Hello</h2><p>Testing!</p></body></html>"
    sAttach   		:= Attachments ; can add multiple attachments, the delimiter is |

    fields := Object()
    fields.smtpserver            := MAIL_SERVERADDRESS     ; smtp Server
    fields.smtpserverport        := MAIL_SERVERPORT        ; Port 25 | 465 (SSL)
    fields.smtpusessl            := MAIL_USE_SSL
    fields.sendusing             := 2                      ; cdoSendUsingPort
    fields.smtpauthenticate      := 1                      ; cdoBasic
    fields.sendusername          := MAIL_USERNAME          ; Login Name
    fields.sendpassword          := MAIL_SERVERPASSWORD    ; Passwort
    fields.smtpconnectiontimeout := 60                     ; Timeout
    schema                       := "http://schemas.microsoft.com/cdo/configuration/"
    pfld                         := pmsg.Configuration.Fields

    For field,value in fields
	    pfld.Item(schema . field) := value
    pfld.Update()

    Loop, Parse, sAttach, |, %A_Space%%A_Tab%
        pmsg.AddAttachment(A_LoopField)
  
    pmsg.Send()
}

Der Aufruf geht dann mit:
send_email("Test EMail vom AHK Script.`n`nWenn Sie diese Nachricht erhalten haben, haben sie eine Nachricht bekommen...", "", "[email protected]")

Das klappt bei mir an sich recht ordentlich.

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 28 guests