質問

Outlookを自動化しているため、メールの送信者を制御する必要があります。ユーザーはOutlookで2つ以上のアカウントを設定し、メールを送信するアカウントを選択できるようにする必要があります。アイデアはありますか?

Outlook 2003以降でサポートされる必要があります。これをコーディングするためにDelphi 2006を使用していますが、それは実際には重要ではありません。

役に立ちましたか?

解決

Sue Mosherという名前の人が、この問題に関するかなりの要約を microsoft.public.office.developer.outlook.vba

要するに、次のいずれかに要約されます。

  • MailItem.SentOnBehalfOfName を使用します。これは、Exchange環境でのみ機能します(これはあなたに当てはまると思います)-ユーザーが「Send As」を持っている場合他のExchangeメールボックスのアクセス許可、これはアカウントの切り替えとほとんど同じです。
  • CommandBars
  • をいじる必要がある小さなハックを使用する
  • Outlookリデンプションを使用
  • (OL2007では、 MailItem.SendUsingAccount

他のヒント

受け入れられた答えを少し広げて、Sueのset_account関数のDelphi実装が必要でした。これについてはインターネット上で何も見つからなかったので、ここにスーのコードのDelphi解釈があります。

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;

スー・モッシャーへのクレジット、ありがとう、あなたなしではできなかったでしょう:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top