アカウントの SMTP アドレスを指定して電子メールを送信する (Outlook)
このトピックでは、電子メールを作成し、指定した簡易メール転送プロトコル (SMTP) アドレスを持つ Microsoft Outlook アカウントからその電子メールを送信する方法を示します。
|
|以下のコード例は、Helmut Obertanner が用意したものです。 Helmut は、Microsoft Visual Studio および Microsoft Office Outlook.| の Microsoft Office 開発ツールに関する専門知識を持つ Microsoft Most Valuable Professional です。
The following managed code samples are written in C# and Visual Basic. コンポーネント オブジェクト モデル (COM) に呼び出す必要がある .NET Framework マネージ コード サンプルを実行するには、マネージ インターフェイスを定義し、オブジェクト モデル タイプ ライブラリの COM オブジェクトにマップする相互運用機能アセンブリを使用する必要があります。 Outlook の場合、Visual Studio および Outlook プライマリ相互運用機能アセンブリ (PIA) を使用できます。 Outlook 2013 用のマネージ コード サンプルを実行する前に、Outlook 2013 PIA をインストールしており、Visual Studio で Microsoft Outlook 15.0 オブジェクト ライブラリ コンポーネントへの参照を追加していることを確認してください。 Outlook アドインのクラスでは ThisAddIn
、次のコード サンプルを使用する必要があります (Office Developer Tools for Visual Studio を使用)。 コードの Application オブジェクトは で提供された、信頼済み Outlook ThisAddIn.Globals
オブジェクトである必要があります。 Outlook PIA を使用してマネージド Outlook ソリューションを開発する方法の詳細については、MSDN の 「Outlook プライマリ相互運用機能アセンブリ リファレンスへようこそ」を参照 してください。
次のコード サンプルには、Outlook アドイン プロジェクトのSample
一部として実装される クラスの メソッドと GetAccountForEmailAddress
メソッドが含まれていますSendEmailFromAccount
。 各プロジェクトは、 Microsoft.Office.Interop.Outlook 名前空間に基づく Outlook PIA への参照を追加します。 メソッドは SendEmailFromAccount
、信頼できる Application オブジェクトと、件名、本文、セミコロンで区切られた受信者の一覧、電子メール アカウントの SMTP アドレスを表す文字列を入力引数として受け取ります。 SendEmailFromAccount
MailItem オブジェクトを作成し、指定された引数を使用して To、Subject、Body の各プロパティを初期化します。 電子メールを送信する Account オブジェクトを検索するには、 SendEmailFromAccount
メソッドを GetAccountForEmailAddress
呼び出します。このメソッドは、指定された SMTP アドレスと現在のプロファイルの各アカウントの SmtpAddress プロパティと一致します。 一致する Account オブジェクトが にSendEmailFromAccount
返され、この Account オブジェクトを使用して MailItem の SendUsingAccount プロパティが初期化され、MailItem が送信されます。
以下は、C# のコード サンプルです。
using System;
using System.Text;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace OutlookAddIn1
{
class Sample
{
public static void SendEmailFromAccount(Outlook.Application application, string subject, string body, string to, string smtpAddress)
{
// Create a new MailItem and set the To, Subject, and Body properties.
Outlook.MailItem newMail = (Outlook.MailItem)application.CreateItem(Outlook.OlItemType.olMailItem);
newMail.To = to;
newMail.Subject = subject;
newMail.Body = body;
// Retrieve the account that has the specific SMTP address.
Outlook.Account account = GetAccountForEmailAddress(application, smtpAddress);
// Use this account to send the email.
newMail.SendUsingAccount = account;
newMail.Send();
}
public static Outlook.Account GetAccountForEmailAddress(Outlook.Application application, string smtpAddress)
{
// Loop over the Accounts collection of the current Outlook session.
Outlook.Accounts accounts = application.Session.Accounts;
foreach (Outlook.Account account in accounts)
{
// When the email address matches, return the account.
if (account.SmtpAddress == smtpAddress)
{
return account;
}
}
throw new System.Exception(string.Format("No Account with SmtpAddress: {0} exists!", smtpAddress));
}
}
}
以下は、Visual Basic のコード サンプルです。
Imports Outlook = Microsoft.Office.Interop.Outlook
Namespace OutlookAddIn2
Class Sample
Shared Sub SendEmailFromAccount(ByVal application As Outlook.Application, _
ByVal subject As String, ByVal body As String, ByVal recipients As String, ByVal smtpAddress As String)
' Create a new MailItem and set the To, Subject and Body properties.
Dim newMail As Outlook.MailItem = DirectCast(application.CreateItem(Outlook.OlItemType.olMailItem), Outlook.MailItem)
newMail.To = recipients
newMail.Subject = subject
newMail.Body = body
' Retrieve the account that has the specific SMTP address.
Dim account As Outlook.Account = GetAccountForEmailAddress(application, smtpAddress)
' Use this account to send the email.
newMail.SendUsingAccount = account
newMail.Send()
End Sub
Shared Function GetAccountForEmailAddress(ByVal application As Outlook.Application, ByVal smtpAddress As String) As Outlook.Account
' Loop over the Accounts collection of the current Outlook session.
Dim accounts As Outlook.Accounts = application.Session.Accounts
Dim account As Outlook.Account
For Each account In accounts
' When the email address matches, return the account.
If account.SmtpAddress = smtpAddress Then
Return account
End If
Next
Throw New System.Exception(String.Format("No Account with SmtpAddress: {0} exists!", smtpAddress))
End Function
End Class
End Namespace
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。