PDA

Vollständige Version anzeigen : Sendeaccount / Sendekonto bei Antwort absenderspezifisch wählen


duffy6
12.01.2018, 11:03
Hallo zusammen,

ich habe ein Exchange-Postfach und habe mehrere Konten (da ich beruflich mit mehreren Adressen senden muss), die aber alle in eine PST arbeiten.
also Kurzfassung: von diversen Mailadressen leite ich auf meine Exchange-Adresse weiter, aber nutze mehrere SMTP-Server zum Senden (deshalb mehrere Konten, da ein Konto nicht mehrere SMTP-Server unterstützt).

Nun meine Frage:
Meine Standard-Sendeadresse ist die Exchange-Adresse (AdresseA).
ABer ich erhalte natürlich Mails von anderen ADressen (AdresseB, AdresseC, etc) - vergleiche oben zum Thema Weiterleitung.
Das funktioniert soweit wunderbar: allerdings wird beim Senden (und vor allem auch beim Antworten) immer die Exchange-Sende-Adresse benutzt.
Ich hätte jetzt gerne zwei Optimierungen:
1)
Wenn ich eine neue Mail an eine bestimmte DOmain sende (bsp: @arbeit.de) soll zum Senden der Account "AdresseB" benutzt werden, bei Mails an die DOmain privat.de dagegen der Account "AdresseC".

UND

2) Wenn ich eine Mail an" AdresseC" erhalte soll beim ANtworten NICHT der Exchange-Account sondern AdresseC
Analog natütlich bei Mails an "AdresseB" den Account "AdresseB".


Ist sowas möglich?
Ich bin nämlich leider ein VBA-Anfänger...

Danke und Gruß
duffy6

markusxy
12.01.2018, 14:04
Natürlich geht das, aber ohne fundierte Kenntnisse macht das wenig Sinn.
Abgesehen davon müssen die Daten gepflegt werden, wofür auch noch entsprechender Code notwendig ist um die Konsistenz zu garantieren.

Der notwendige Aufwand ist ganz ordentlich.
Konzeptuell würde ich jetzt im Stegreif folgendes machen:
Mit dem NewInspector event den MailItem EventListener aktivieren.
Dann muss das Events PropertyChange ausgewertet wenn ein Empfänger ausgewählt wird - um das entsprechende Versandkonto zu wählen.

Hab ich so aber noch nie angewendet - man müsste also etwas herumspielen.

Weiters müssen Forward und Reply ausgewertet werden um einerseits den MailItem EventListener zu aktualisieren und andererseits bei Reply das notwendige Versandkonto zu wählen.

LG Markus

H_E_K
12.01.2018, 17:45
Ich gebe Markus recht. Klar geht das, aber das ist ein ziemlich umfangreiches VBA-Projekt mit einigen Hürden. Für einen VBA-Anfänger drei Nummern zu groß. Und hier musst du schon jemanden überreden, dir die Arbeit abzunehmen. :entsetzt:
Konzeptionell - wenn du dich doch da durchwurschteln willst - sieht es so aus:
- du musst per VBA den Moment vor dem Senden abfangen, das wäre am elegantesten,
- dann hast du alle Möglichkeiten, die Mail über die Mail-Item-Eigenschaften zu identifizieren (wo geht sie hin? Ist sie eine Ersterstellung, Antwort oder Weiterleitung? usw.)
- dann musst du das Sendekonto entsprechend zuordnen.

Je nach deinem VBA-Kenntnisstand ist die VBA-Referenz für Outlook (https://msdn.microsoft.com/de-de/VBA/VBA-Outlook) da sehr hilfreich, insbesondere das Objektmodell (https://msdn.microsoft.com/de-de/vba/outlook-vba/articles/object-model-outlook-vba-reference).

halweg
13.01.2018, 13:23
Also bei meinen 10 Konten wird fürs Senden immer das Empfangskonto der vorherigen Nachricht genommen. Das hat dann auch Einfluss auf die automatisch verwendete Signatur.
Ich muss also nur dort manuell eingreifen, wo ich einen neuen Schriftverkehr beginne und dieser nicht über das Standard-Konto laufen soll. Der Aufwand hält sich in Grenzen...

H_E_K
13.01.2018, 13:25
Also bei meinen 10 Konten wird fürs Senden immer das Empfangskonto der vorherigen Nachricht genommen. Das hat dann auch Einfluss auf die automatisch verwendete Signatur.
Ich muss also nur dort manuell eingreifen, wo ich einen neuen Schriftverkehr beginne und dieser nicht über das Standard-Konto laufen soll. Der Aufwand hält sich in Grenzen...

Ja, das dachte ich eigentlich auch. Schlimmstenfalls ein Klick, um einen anderen Absender auszuwählen. Dafür der ganze Aufwand in VBA?

markusxy
13.01.2018, 18:42
Da ich auch verschiedene Mail Adressen mit einer Datendatei verwende hab ich mal einen Code erstellt, der für das Antworten die Empfangsadresse verwendet.

Werde die nächsten Tage mal sehen, ob das zu einwandfrei funktioniert.


Hier der bisherige Code:


Code aus ThisOutlookSession:
Private Sub i_NewInspector(ByVal Inspector As Inspector)
With Inspector.CurrentItem
If .Class = olMail Then
If .Sent = False Then
With New CAbsender
.Init Inspector.CurrentItem
End With
End If
End If
End With
End Sub

Code aus der CAbsender Klasse:

Option Explicit

Private Self As CAbsender
Private WithEvents Mail As MailItem

Private Sub Mail_Close(Cancel As Boolean)
Set Self = Nothing
End Sub

Sub Init(oMail As MailItem)
Dim X As Object

Dim bFound As Boolean
Dim i&

Set Self = Me
Set Mail = oMail

'Bais Mail suchen
If Mail.Recipients.Count > 0 And Len(Mail.ConversationIndex) > 0 Then
'Antworten/Weiterleiten über geöffnete Mail
On Error Resume Next
Set X = ActiveInspector.CurrentItem
If Err = 0 Then
bFound = IsParentFound(X)

End If

If bFound = False Then
'Antworten/Weiterleiten über Selection im Explorer
Dim oSelection As Selection
Set oSelection = ActiveExplorer.Selection
For i = 1 To oSelection.Count
If IsParentFound(oSelection.Item(i)) Then Exit For
Next
End If
End If
End Sub
Private Function IsParentFound(X As Object) As Boolean
Dim oAccount As Account

With Mail
If X.Class = olMail Then
If X.ConversationIndex = Left(.ConversationIndex, Len(.ConversationIndex) - 10) Then
IsParentFound = True
'empfänger Kontofeststellen
If IsAccountFromRecipits(X.Recipients, oAccount) Then
Mail.SendUsingAccount = oAccount
End If
End If
End If
End With
End Function

Private Function IsAccountFromRecipits(oRecipients As Recipients, RAccount As Account) As Boolean
Dim oRecipient As Recipient
Dim oAccount As Account

For Each oRecipient In oRecipients
For Each oAccount In Application.Session.Accounts
If oRecipient.Address = oAccount.SmtpAddress Then
Set RAccount = oAccount
IsAccountFromRecipits = True
Exit Function
End If
Next
Next
End Function

LG Markus

Edit: Habe jetzt den ganzen Code aus CAbsender eingefügt.
Da bei mehreren Mails theoretisch eine zusätzliche Collection für die Klassen erforderlich wäre, verwende ich vorerst die self Variable als Zeiger auf das Objekt.

Die Möglichkeiten der Automatisierung in Outlook ist mit VBA auf jeden Fall unbefriedigend.
Aus meiner Sicht wäre es viel einfacher in Access ein komplett unabhängiges Formular zu erstellen, und alles von dort aus zu steuern.
Damit wäre eine saubere Steuerung möglich.

halweg
13.01.2018, 20:25
Da ich auch verschiedene Mail Adressen mit einer Datendatei verwende hab ich mal einen Code erstellt, der für das Antworten die Empfangsadresse verwendet.
Ich habe auch nur eine pst-Datei für verschiedene Konten...
Du hast nicht zufällig die Option "Immer vom Standardkonto senden" aktiviert?

markusxy
13.01.2018, 20:30
Ich habe auch nur eine pst-Datei für verschiedene Konten...
Du hast nicht zufällig die Option "Immer vom Standardkonto senden" aktiviert?

Ich verwende Exchange, daher keine PST Datei.
Es gibt da nur die Einstellung des Standard Kontos über das immer versandt wird.
Wo sollte ich die Option finden? Ich kenne sie nicht.
Warum fragst du überhaupt?

H_E_K
13.01.2018, 21:08
Ich verwende Exchange, daher keine PST Datei.
Es gibt da nur die Einstellung des Standard Kontos über das immer versandt wird.
Wo sollte ich die Option finden? Ich kenne sie nicht.
Warum fragst du überhaupt?

Das hat mit der .pst-Datei nichts zu tun, sondern ist Teil der Einstellungen in Outlook. Bei 2013 zum Beispiel hier:
https://www2.pic-upload.de/img/34651150/standardkonto.jpg (https://www.pic-upload.de)

markusxy
15.01.2018, 12:38
Ich habe auch nur eine pst-Datei für verschiedene Konten...
Du hast nicht zufällig die Option "Immer vom Standardkonto senden" aktiviert?

Also die Option gibt es in meiner Version scheinbar wirklich noch nicht.
Es wird also immer mit dem Standardkonto versandt.

Warum fragst du?

halweg
15.01.2018, 13:58
Warum fragst du?
Nun schon zum zweiten Mal diese in einem Forum relativ irritierende Rückfrage an einen Helfer :eek:

Es liegt ja auf der Hand, dass das genau die Option ist, die dir helfen würde, eine nicht ganz triviale Makrolösung zu vermeiden.
Ich denke, hier wäre nun auch ein guter Zeitpunkt, das langgehegte Geheimnis der von dir verwendeten Outlook-Version zu lüften;)
(Oder habe ich etwas überlesen?)

H_E_K
15.01.2018, 14:08
Ich denke, hier wäre nun auch ein guter Zeitpunkt, das langgehegte Geheimnis der von dir verwendeten Outlook-Version zu lüften;)
(Oder habe ich etwas überlesen?)

Nee, haste nicht. Aber ich meine, selbst in meinem früheren Outlook 2003 hätte es diese Option gegeben. :grins:

markusxy
15.01.2018, 15:20
@halweg, 2007. So jetzt ist das Geheimnis gelüftet.

halweg
15.01.2018, 15:23
OK, ich habe gerade kein Office 2007 da, aber glaube mich zu erinnern, dass diese Option bei 2002 da war. Sie gibt es in Outlook 2010, in Outlook 2016. Auch in Exchange-Umgebungen.

H_E_K
15.01.2018, 16:02
@halweg, 2007. So jetzt ist das Geheimnis gelüftet.
Hilft dir das hier?:
[http://www.*************************235066_0_0_asc.php
Link klappt nicht, wird zerschossen, also:
Webadresse von office-loesung.de, dann "ftopic235066_0_0_asc.php"

H_E_K
15.01.2018, 16:09
Und das hier betrifft zwar Outlook 2010, könnte aber trotzdem funktionieren:
http://www.it-administrator.de/themen/kommunikation/110950.html

markusxy
16.01.2018, 13:56
Und das hier betrifft zwar Outlook 2010, könnte aber trotzdem funktionieren:
http://www.it-administrator.de/themen/kommunikation/110950.html

für manche mag das ja passen.

H_E_K
16.01.2018, 15:51
für manche mag das ja passen.
Was will uns das jetzt sagen?