أتمتة Outlook - تغيير حساب المرسل

أتمتة Outlook وأحتاج إلى التحكم في من يبدو أن البريد الإلكتروني من. سيكون لدى المستخدمين حسابان أو أكثر تم إعدادهما في Outlook وأحتاج إلى تحديد الحساب الذي تريد إرسال البريد الإلكتروني منه. أيه أفكار؟

يحتاج إلى دعم على Outlook 2003 وما فوق. أستخدم دلفي 2006 لترميز هذا ، لكن هذا لا يهم حقاً.

3

2 إجابة

كتب شخص يدعى سو موشر ملخصًا رائعًا حول هذه المسألة في microsoft.public.office.developer.outlook.vba .

باختصار ، يتلخص الأمر في أي من هذا:

  • use MailItem.SentOnBehalfOfName, which only works in Exchange enviromnents (I suppose that is the case for you) - when the user has "Send As" permissions for the other Exchange mailbox, this is pretty much the same thing as switching accounts.
  • use a small hack that involves fiddling with the CommandBars
  • use Outlook Redemption
  • (in OL2007, you would have MailItem.SendUsingAccount)
2
وأضاف
وأضاف المؤلف Kiquenet, مصدر
Kiquenet أنت أكثر من موضع ترحيب لتقديم واحدة. :)
وأضاف المؤلف Tomalak, مصدر

توسيع بعض الشيء على الإجابة المقبولة ، كنت بحاجة إلى تنفيذ دلفي لوظيفة set_account سو. لا يمكن العثور على أي شيء على الإنترنت في أي مكان لهذا ، لذلك هنا هو تفسير دلفي لرمز سو.

Function SetAccount(TargetAccount:string; var MailItem:OLEVariant):boolean;
var OLI,CBs,CBP,MC:olevariant;
    strAccountBtnName:String;
    i,t:Integer;
    FoundAccount:Boolean;
Const ID_ACCOUNTS = 31224;
begin
    FoundAccount:=false;
    OLI:=MailItem.GetInspector;
    CBs:=OLI.CommandBars;
    CBP:=CBs.FindControl(, ID_ACCOUNTS);
    t:=1;
    while (not FoundAccount) and (t<=CBP.Controls.Count) do begin
       MC:=CBP.Controls[t];
       i:=Pos(' ',MC.Caption);
       if i > 0 Then strAccountBtnName:=Copy(MC.Caption,i+1,Length(MC.Caption)-i)
       else strAccountBtnName:=MC.Caption;
       if strAccountBtnName = TargetAccount then begin
           MC.Execute;
           FoundAccount:=true;
       end;
       inc(t);
    end;
    Result:=FoundAccount;
end;

الائتمان إلى سو موشر ، شكرا لك ، لم أستطع فعل ذلك دونك :)

2
وأضاف