---
title: "メールキャンペーンをプログラム的に送信する"
slug: "sending-email-campaigns-programmatically"
abstract: "Content Delivery(CD)役割から、Email Experience Manager APIを使って定期的におよび自動化されたメールキャンペーンをプログラム的に送信する方法。"
---
# メールキャンペーンをプログラム的に送信する

Email Experience Manager API([IClientApiService](https://doc.sitecore.com/xp/ja/developers/exm/100/email-experience-manager/the-email-experience-manager-client-api.html "The Email Experience Manager Client API"))はContent Delivery(CD)ロールでのみ使用可能です。Content Management (CM)ロールからプログラム的に定期および自動化されたメールキャンペーンを送信するには、以下の例に従ってください。

## 自動メールキャンペーン

自動メールキャンペーンを送信するには、CDロールでも使われるメッセージバスを使いましょう。

IMessageBus<AutomatedMessagesBus> automatedMessageBus =
ServiceLocator.ServiceProvider.GetService<IMessageBus<AutomatedMessagesBus>>();

AutomatedMessage automatedMessage = new AutomatedMessage()
{
    ContactIdentifier = contactIdentifier,
    MessageId = emailCampaignId
};
automatedMessageBus.Send(automatedMessage);
## 定期的なメールキャンペーン

通常のメールキャンペーンを送信するには、送信マネージャーをご利用ください。

> !注ISendingManagerFactoryは*Sitecore.EmailCampaign.Cm*パッケージのSitecore.EmailCampaign.Cm.Factories+ 名前空間に含まれています。

var sendingManagerFactory =
ServiceLocator.ServiceProvider.GetService<ISendingManagerFactory>();
var campaignService =
ServiceLocator.ServiceProvider.GetService<IExmCampaignService>();

MessageItem emailCampaign = campaignService.GetMessageItem(emailCampaignId);

ISendingManager sendingManager =
sendingManagerFactory.GetAsyncSendingManager(emailCampaign);

sendingManager.SendMessage();