2017-11-17 1 views
1

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 ...

+0

Wenn Sie zusammenfassen könnten, was die eigentliche Frage ist, könnte das Menschen helfen, die in Zukunft in diese – DaveInCaz

Antwort

0

GELÖST!

Ich weiß, das Thema ist sehr wahrscheinlich nicht von Interesse für jede Programmierung im 20. Jahrhundert, aber hier ist das Update:

.RecipAddress = "SMTP:" & txtTo 

Es mir kam gerade. :)

+0

stoßen Im Gegenteil gibt es genug Leute da draußen, dass dies nützlich sein kann! – DaveInCaz

Verwandte Themen