आउटलुक स्वचालन - प्रेषक खाता बदलें

मैं आउटलुक स्वचालित कर रहा हूं और मुझे यह नियंत्रित करने की आवश्यकता है कि ईमेल किससे दिखाई देता है। उपयोगकर्ताओं के पास 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
जोड़ा