HINWEIS: bearbeitet von Original, nachdem ich die Outlook-Version 32-Bit nicht 64-Bit entdeckt wurde.Adressfehler beim Senden von E-Mail mit 32bit Outlook mit Automatisierung
Ich habe ein altes 32-Bit-VB6-Programm, das Outlook 2010 32bit (Vollversion, nicht Express) verwendet, um E-Mails zu senden. Funktioniert perfekt auf vielen Maschinen außer einer Maschine mit Windows 7 (64-Bit nehme ich an). Nicht sicher, ob alle Windows 7-Maschinen nicht funktionieren oder nur diese.
Wenn ich die Automatisierungstechnik oder die MAPI-Technik verwende (wie ich sie anrufe, siehe Code unten), sendet Outlook die E-Mail, aber der Mail-Server gibt sie als unzustellbar zurück und sagt, dass der Empfänger nicht existiert.
Jetzt, wenn die Automatisierungstechnik verwendet wird, zeigt Outlook keine Benutzeroberfläche an und die E-Mail wird im Hintergrund gesendet.
Wenn jedoch die MAPI-Technik verwendet wird, öffnet Outlook den E-Mail-Dialog, in dem der Benutzer die E-Mail vor dem Senden bearbeiten kann. Interessant ist, dass die E-Mail des Empfängers gut aussieht, aber beim Senden als unzustellbar fehlschlägt. Wenn der Empfänger jedoch gelöscht und erneut eingegeben wird, ist die E-Mail erfolgreich. Ich glaube, eine Kopie und ein erneutes Einfügen funktioniert auch.
Das sagt mir, dass es eine oder mehrere versteckte illegale Zeichen in der Empfänger-E-Mail-Adresse (Nullen vielleicht?) Müssen. Der unten gezeigte Code ist sehr einfach und ich kann mir keine offensichtliche Lösung vorstellen. txtTo ist eine vb6-Zeichenfolge mit einer E-Mail-Adresse und dies ist das Feld, das alle Probleme verursacht.
Die Fehlermeldung:
Your message did not reach some or all of the intended recipients.
Subject: a test from daryls cpu #2
Sent: 11/17/2017 8:01 PM
The following recipient(s) cannot be reached:
'[email protected]' on 11/17/2017 8:01 PM
None of your e-mail accounts could send to this recipient.
Automation Technique
Dim mOutlookApp As Object
Set mOutlookApp = GetObject("", "Outlook.application")
Dim olNs As Object
Set olNs = mOutlookApp.GetNamespace("MAPI")
olNs.Logon
Dim OutMail As Object
Set OutMail = mOutlookApp.CreateItem(0)
'Set the To and Subject lines. Send the message.
With OutMail
.To = txtTo
.CC = txtCC
.Subject = txtSubjext
.HTMLBody = txtBody & vbCrLf
Dim myAttachments As Object
Set myAttachments = .Attachments
vAttach = Split(mAttachments, ",")
For i = 0 To UBound(vAttach)
myAttachments.add vAttach(i)
Next i
Dim myFolder As Object
Set myFolder = olNs.GetDefaultFolder(5) 'olFolderSent
Set .SaveSentMessageFolder = myFolder
StatusBar1.Panels(1).Text = "Status: Sending"
.send
End With
MAPI-Technik
'Open up a MAPI session:
With frmMain.MAPISession1
.DownLoadMail = False
.Username = ""
.LogonUI = True
.SignOn
End With
With frmMain.MAPIMessages1
.SessionID = frmMain.MAPISession1.SessionID
.Compose
.MsgIndex = -1
.RecipIndex = 0
.RecipAddress = txtTo
.RecipDisplayName = txtTo
.RecipType = mapToList
If txtCC <> "" Then
.RecipIndex = 1
.RecipDisplayName = txtCC
.RecipAddress = txtCC
.RecipType = mapCcList
End If
'spaces are important! need one space for each attachment
'NOTE .MsgNoteText = " " MUST be there see.. KB173853 in microsoft
.MsgSubject = txtSubjext
.MsgNoteText = Space$(UBound(vAttach) + 1) & vbCrLf
.MsgNoteText = txtBody & vbCrLf
For i = 0 To UBound(vAttach)
.AttachmentIndex = i
.AttachmentPosition = i
.AttachmentType = mapData
.AttachmentName = GetFileFromPath(vAttach(i))
.AttachmentPathName = vAttach(i)
Next i
StatusBar1.Panels(1).Text = "Status: Sending"
.send True
End With
Mehr Info:
ich einige Fortschritte zu machen. Der Fehler hat mit dem E-Mail-Typ in Outlook zu tun, der nicht SMTP ist. Wenn Sie auf die Sende-E-Mail im Outlook-Dialog klicken, klicken Sie mit der rechten Maustaste auf die E-Mail-Adresse, wählen Sie dann Outlook-Eigenschaften und ändern Sie den E-Mail-Typ in SMTP. Der angezeigte Typ ist die E-Mail-Adresse selbst, gültige Werte scheinen "mailto" und "smtp" zu sein. Also, wenn ich den E-Mail-Typ von vb6 einstellen kann, sollte es den Fehler beheben.
Die 'Antwort'? https://kb.intermedia.net/article/2344
ich nicht glauben, kann es keine Lösung ist, das für ...
Wenn Sie zusammenfassen könnten, was die eigentliche Frage ist, könnte das Menschen helfen, die in Zukunft in diese – DaveInCaz