Hallo,
ich kaempfe etwas mit der INetMail Funktion, insbes. mit dem Body.
_INetMail() muss sein, da das Prog. auf versch. Rechnern laeuft, versch. User, Win 7 + Win 10, Office 2010 + 2016, mit Outlook und Thunderbird funktionieren muß.
Entwickelt wird unter Win 7 pro, Office 2010 pro.
Mein Datenauswertungsprogramm analysiert div. Excel- und Word Dateien, zieht Daten heraus, verrechnet die in einer xls-Datei, und baut daraus 4 Mails auf. Dann wird eine Abschlußmeldung gezeigt (msgbox) und Programmende.
Sowohl Mail Adressaten (bis zu 15 Stueck) als auch Mail Body (insges. ca. 200/300 Bytes, bis max. 20 Zeilen) werden aus den extrahierten Daten dynamisch erzeugt.
Die ersten drei Mails sind komplett ok, die vierte mag den Body nicht.
Mail AN: geht fehlerfrei, aber der Body verhaelt sich instabil: mal (= sehr selten) ist der Text drin, mal nicht (gar kein Text). Und auch keine Fehlermeldung.
Debuggen laut msgbox gibt aber alles (= body) korrekt aus.
Der Body selber:
Reiner Text, keine Umlaute darin, dafuer "Formatierung" in Form von - teilw. mehreren - @CRLF hintereinander. Und - ja: ein paar "echte" Links ins Web (die koennen auch schon mal recht lange sein...)
Dazu ein Ausschnitt vom Code:
local $s_outmail_adrs = "" ; Adressatenliste
local $s_outmail_subj = "" ; Betreff
local $s_outmail_body = "" ; Mail-Texte, mit den Zeilen: 1 für die CCs, plus Text
local $l_proc_ident
...
; Einlesen der $g_mail_... Texte aus der INI Datei
...
$s_outmail_adrs = $g_mail_an
$i_max = $techs[0][0]
for $i = 1 to $i_max
$s_outmail_adrs = $s_outmail_adrs & $techs[$i][2] & ", "
Next
; Betreff ist <text> und <datum>...
$s_outmail_subj = $g_mail_subj & " " & $gxls_date
; Mail Text ist ...<anrede text 1>... und die Links zu...
$s_outmail_body = $g_mail_txt1 & $gxls_date & @CRLF & @CRLF ; Anrede
$s_outmail_body = $s_outmail_body & $g_mail_txt2 & @CRLF & @CRLF ; Link zu
$s_outmail_body = $s_outmail_body & $g_mail_txt3 & @CRLF & @CRLF ; Link zu
$s_outmail_body = $s_outmail_body & $g_mail_txt4 & @CRLF ; Anhang xls
$s_outmail_body = $s_outmail_body & $gxls_file & @CRLF
; debug output...
if $debuggen = 1 Then
MsgBox($MB_SYSTEMMODAL, "erzeuge_info4_mail()", "...mail_adrs: " & $s_outmail_adrs & @CRLF & "...mail_subj: " & $s_outmail_subj & @CRLF & "...mail_body: " & $s_outmail_body)
EndIf
; and start the user's default mail client: new mail with given address, subject, and body
$l_proc_ident = _INetMail($s_outmail_adrs, $s_outmail_subj, $s_outmail_body)
If @ERROR Then
MsgBox($MB_SYSTEMMODAL, "_INetMail() - Error !", "cannot start user's default mail client for Info 4 Mail.")
Exit
EndIf
Alles anzeigen
Meine Fragen:
1. Gibt es eine echte Beschraenkung der Stringlaenge bei subject und body ?
Dazu habe ich nirgendwo etwas konkret gefunden (ein thread hier, aber dort war nur die Rede von ...hundert Zeilen)
2. Kann es ein timing Problem sein ?
Daß AutoIT die Mail Aufrufe startet (also an Win uebergibt), und befuellt (Parameter), aber asynchron (evtl. child process vom au3). Dann Programmende vom au3 - und cut: child killed (und die Mail noch nicht fertig) ?
Oder ein anderer Effekt ?
Danke fuer nen Tip.
Gruss
bertelh
AutoIT newbie
(15 Jahre Programmierung in div. Sprachen / Plattformen)