私はwinformsアプリケーションを持っており、新しいOutlook電子メールを作成して開くメソッドを作成しようとしています。これまでのところ私は持っています
private void CreateOutlookEmail()
{
try
{
Outlook.MailItem mailItem = (Outlook.MailItem)
this.CreateItem(Outlook.OlItemType.olMailItem);
mailItem.Subject = "This is the subject";
mailItem.To = "[email protected]";
mailItem.Body = "This is the message.";
mailItem.Importance = Outlook.OlImportance.olImportanceLow;
mailItem.Display(false);
}
catch (Exception eX)
{
throw new Exception("cDocument: Error occurred trying to Create an Outlook Email"
+ Environment.NewLine + eX.Message);
}
}
ただし、「CreateItem」参照にはエラーメッセージで下線が引かれています
「CreateItemの定義が含まれていません」
「CreateItem」はMSOfficeアイテムの標準的な方法だと思いましたが、確かに別のWebサイトで上記のコードを見つけて、単にコピーしました。
何を誤解してください?
考えてみてください。 CreateItem
現在のオブジェクトでthis
メソッドを呼び出しています。このクラスでCreateItem
メソッドを定義しましたか?
あなたの代わりに:
Outlook.MailItem mailItem = (Outlook.MailItem) this.CreateItem(Outlook.OlItemType.olMailItem);
次の行が必要です。
Outlook.Application outlookApp = new Outlook.Application();
Outlook.MailItem mailItem = (Outlook.MailItem) outlookApp.CreateItem(Outlook.OlItemType.olMailItem);
CreateItem
メソッドを呼び出すことができるOutlookアプリケーションのインスタンスを作成します。
これを適切に機能させるには、さらに2つのことがあります。
1)Microsoft.Office.Interop.Outlook
パッケージへの参照をプロジェクトに追加します
2)クラスに適切なusingステートメントがあることを確認します
using Outlook = Microsoft.Office.Interop.Outlook;
これを試して
string subject = "My subject";
string emailTag = string.Format("mailto:[email protected]?subject={0}", subject);
System.Diagnostics.Process.Start(emailTag);
私の経験では、Office.Interopは面倒な場合があり、適切な引数を使用してOutlookを開始するだけで、より単純で移植性の高いオプションになる可能性があります。
System.Diagnostics.Process.Start("C:\\Program Files (x86)\\Microsoft Office\\Office12\\Outlook.EXE", "/c ipm.note /m [email protected]"));
Outlookのコマンドラインスイッチは、さまざまな情報源を備えたさらに多くのオプションを提供します(試してみてください http://www.Outlook-tips.net/how-to/using-Outlook-command-lines )