Vor dem Senden einer Mail - Abfrage nach MailKonto

Hallo zusammen,

mir ist es in Outlook2007 schon öfter passiert, dass ich eine Mail versehentlich mit dem Standard-Mail-Konto versendet habe. Ist es möglich, wenn ich auf „Neue Mail“ klicke, dass sich ein Fenster öfnet, in dem ich das Konto auswählen kann, mit dem ich die Mail versenden möchte ?

Wenn ja, wie ist das möglich ?
(Ich habe leider überhaupt keine Ahnung von VB und VBA, aber ich denke hiermit müßte es doch machbar sein, oder ?

Vielen dank für Eure Hilfe.

Gruß
Winni

mir ist es in Outlook2007 schon öfter passiert, dass ich eine
Mail versehentlich mit dem Standard-Mail-Konto versendet habe.
Ist es möglich, wenn ich auf „Neue Mail“ klicke, dass sich ein
Fenster öfnet, in dem ich das Konto auswählen kann, mit dem
ich die Mail versenden möchte ?

Wenn ja, wie ist das möglich ?
(Ich habe leider überhaupt keine Ahnung von VB und VBA, aber
ich denke hiermit müßte es doch machbar sein, oder ?

Hi Winni,

scheinbar ist es erst ab OL2007 möglich das Absendekonto abzuändern.
Ich habe aber kein OL2007. Gehe mal in den VB-Editor, dort in die Hilfe und poste mal hier was da zu der MailItem-Eigenschaft „SendUsingAccount“ steht. Wenn ein Beispiel dabei ist auch dieses.

M.W. wird das Standardkonto in der Registry eingetragen. In OL-Versionen vor OL2007 müßte man OL beenden, die Registry ändern und OL wieder starten was mit OL-Vba-Code gar nicht so einfach zu machen sein wird *denk*.

Obwohl alle sagen, vor OL2007 ginge es nicht stiess ich bei der Recherche auf nachstehende Funktion.

Leider kriegte ich sie mit meiner Sub Test nicht zum Laufen. Von daher ist mir noch unklar was sie eigentlich genau macht.

Sub tt()
Dim Test, myOlApp, myItem
Set myOlApp = CreateObject(„Outlook.Application“)
Set myItem = myOlApp.CreateItem(olMailItem)
Test = Set_Account(„Name1“, myItem, „Unbenannt - Nachricht (Nur Text)“)
End Sub

Leider bemängelt der Debugger bei M bzw. myItem den Typ, durch Benutzung von ByVal M verschwand dieser Fehler, dann kommmt aber
falscher Typ bei „Unbenannt - Nachricht (Nur Text)“ .

Welche Parameter will denn die mistige Funktion?

Danke ^ Gruß
Reinhard

 'Function sends the settet Account-name as result, if empty, no account is set
 '#######################################################################################
 Function Set\_Account(ByVal KontoName As String, M As Outlook.MailItem, OLI As Outlook.Inspector) \_
 As String

 caption\_CmdBar = "Standard"
 caption\_KontoBtn = "K&onten"
 caption\_Konto = KontoName
 '\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
 Dim CBs As CommandBars
 Dim CB As CommandBar
 Dim CBB As CommandBarPopup
 Dim MC As CommandBarControl

 Set CBs = OLI.CommandBars
 CBn = OLI.CommandBars.Count

 '/¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\
 ' Loop Command-Bars....
 For CBi = 1 To CBn
 Bez = CBs(CBi).Name
 ' |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
 If Bez = caption\_CmdBar Then
 Set CB = CBs(CBi)
 CBBn = CB.Controls.Count 'CB ~ CmdBar
 ' /¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\
 ' Loop CmdBar-Buttons...
 For CBBi = 1 To CBBn
 Bez = CB.Controls(CBBi).Caption
 ' |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
 If Bez = caption\_KontoBtn Then
 Set CBB = CB.Controls(CBBi)
 MCn = CBB.Controls.Count ' MC ~ Menu-Command
 ' /¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\
 ' Loop Konto-Auswahl-Menu-Befehle
 For MCi = 2 To MCn
 Bez = CBB.Controls(MCi).Caption
 Bez = Right(Bez, Len(Bez) - 3)
 Debug.Print MCi; ")"; Bez
 ' |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
 If Bez = caption\_Konto Then
 CBB.Controls(MCi).Execute
 Set\_Account = caption\_Konto
 Exit Function
 End If
 ' |\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|
 Next MCi
 ' \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_/
 End If
 ' |\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|
 Next CBBi
 ' \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_/
 End If
 ' |\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|
 Next CBi
 '\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_/
 Set\_Account = ""
 End Function

Hallo Reinhard,

danke schon jetzt für Deine Hilfe !

Ich habe aber kein OL2007. Gehe mal in den VB-Editor, dort in
die Hilfe und poste mal hier was da zu der
MailItem-Eigenschaft „SendUsingAccount“ steht. Wenn ein
Beispiel dabei ist auch dieses.

_____________________________________
Outlook-Entwicklerreferenz
MailItem.SendUsingAccount-Eigenschaft
Gibt ein Account-Objekt zurück, das das Konto darstellt, unter dem das MailItem-Objekt gesendet wird, oder legt dieses Objekt fest. Wert mit Lese-/Schreibzugriff.
Versionsinformationen
Hinzugefügte Version: Outlook 2007

Syntax

Ausdruck.SendUsingAccount

Ausdruck Ein Ausdruck, der ein MailItem-Objekt zurückgibt.

Anmerkungen

Mithilfe der SendUsingAccount-Eigenschaft kann das Konto angegeben werden, das zum Senden des MailItem-Objekts verwendet werden soll, wenn die Send-Methode aufgerufen wird. Durch Festlegen dieser Eigenschaft auf Null (Nothing in Visual Basic) geben Sie an, dass das Standardkonto verwendet werden soll, um das MailItem-Objekt zu senden. Diese Eigenschaft gibt Null (Nothing in Visual Basic) zurück, wenn das für das MailItem-Objekt angegebene Konto nicht mehr vorhanden ist.
_________________________________________

Hallo Winni,

danke schon jetzt für Deine Hilfe !

de nada :smile:

Deine Antwort sieht schon mal sehr gut aus. Ich bin zuversichtlich das hinzukriegen, naja, sicher bin ich mir nicht.
Das liegt daran daß ich kein Office 2007 installiert habe, in Outlook-Vba nur einmalig was kurzes programmiert habe und es sich halt von Excel-Vba wo ich einen Tick besser bin doch stark unterscheidet.

Damit will ich sagen, ich kann nix austesten was das Ganze absolut nicht vereinfacht :frowning:

Ich melde mich wenn ich fertigen Code gebastelt habe, den mußt du dann testen.

Gruß
Reinhard

Lieber Reinhard,

ich bin mittlerweile in einem anderen Forum fündig geworden, dort sieht das so aus und es funktioniert:
______________________________________

Sub Set_MailAccount()

On Error GoTo Fehler

Dim objMailItem As Outlook.MailItem
Set objMailItem = Application.CreateItem(olMailItem)

With objMailItem
.SentOnBehalfOfName = „E-Mail-Adresse oder Anzeigename für das SendeKonto“
.Display
End With
Exit Sub

Fehler:
MsgBox „Es ist ein Fehler aufgetreten.“

End Sub
________________________________________

Du brauchst Dir also nicht noch mehr Mühe machen und Zeit investieren ! Herzlichen Dank für Deine große Hilfe !

(Ich bin nach wievor auch an Deinem Script interessiert, aber wie gesagt, die Lösung, die für das was ich umsetzen wollte, habe ich nun gefunden und Du bräuchtest Dir deswegen keine Arbeit mehr zu machen…)

Viele Grüße
vom Winni

Hi Winni,

auf SentOnBehalfOfName stiess ich auch bei der Recherche, aber scheinbar bekommt dann der Empfänger der Email beim Absender zu sehen:

abgeschickt von [email protected] von Konto [email protected]

o.ä.

es wird also dein Standardkonto genannt und das andere.

kanst du das bestätigen indem du mal paar Empfänger deiner Mails (durch den Code abgeschickt) fragst was sie denn beim Absender lesen!?

Gruß
Reinhard

ich bin mittlerweile in einem anderen Forum fündig geworden,
dort sieht das so aus und es funktioniert:
Sub Set_MailAccount()
On Error GoTo Fehler

Dim objMailItem As Outlook.MailItem
Set objMailItem = Application.CreateItem(olMailItem)

With objMailItem
.SentOnBehalfOfName = „E-Mail-Adresse oder Anzeigename
für das SendeKonto“
.Display
End With
Exit Sub

Fehler:
MsgBox „Es ist ein Fehler aufgetreten.“

End Sub
________________________________________

Du brauchst Dir also nicht noch mehr Mühe machen und Zeit
investieren ! Herzlichen Dank für Deine große Hilfe !

(Ich bin nach wievor auch an Deinem Script interessiert, aber
wie gesagt, die Lösung, die für das was ich umsetzen wollte,
habe ich nun gefunden und Du bräuchtest Dir deswegen keine
Arbeit mehr zu machen…)

Viele Grüße
vom Winni