0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

blastengine VBA SDKでメール種別を気にせず送信できるようになりました

Posted at

blastengineはエンジニアフレンドリーなメール配信サービスです。APIとSMTPリレーの両方をサポートしており、手軽に素早くメール配信ができるようになっています。

今回はVBA SDKでメールの種類(即時配信、一括配信など)を気にせずに利用できるMailクラスを作成しましたので、その使い方を解説します。

ユーザ登録する

blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。

image.png

送信元ドメインのSPFを設定する

送信元として利用するドメイン(自分で持っているもの)の設定をします。これは任意のドメイン管理サービスで設定できますが、TXTレコードに以下のSPFを追加します。

txt @ v=spf1 include:spf.besender.jp ~all

APIキーを取得する

ログイン後、管理画面の右上にある設定メニューに移動します。

getting-started-6.jpg

そして設定の中で、APIキーを取得します。

getting-started-5.png

必要な情報について

SDKを使う上で必要なのは、先ほどのAPIキーとユーザIDになります。

SDKのインストール

SDKは リリースページでマクロ付きExcelファイルをダウンロードするか、リポジトリの内容をvbacでコンパイルしてください。

blastengineMania/blastengine-vba: blastengineのVBA SDKです

参照設定について

VBAエディタで、ツール > 参照設定 から、以下の参照設定を追加してください。

  • Microsoft ActiveX Data Objects 6.1 Library
  • Microsoft XML, v6.0

※ 将来的には、参照設定を不要にする予定です。

初期化

先ほどのAPIキーとユーザIDを使って初期化します。

Dim client As new Blastengine
client.ApiKey = "YOUR_API_KEY"
client.UserId = "YOUR_USER_NAME"

メールの種類

blastengineで利用する主なメールの種類は以下の2つになります。

メール種別 添付ファイル 即時配信 宛先 CC・BCC 配信日時指定
トランザクションメール 1つ ×
バルクメール 複数 ×

MailクラスではCCとBCCを指定しながら、配信日時を指定しようとするとエラーになるので注意してください。

Mailクラスの使い方

Mailクラスには以下のメソッド・プロパティが用意されています。

単数指定

  • DeliveryId(ByVal Value As Long)
  • Subject(ByVal Subject As String)
  • Encode(ByVal Encode As String)
  • TextPart(ByVal TextPart As String)
  • HtmlPart(ByVal HtmlPart As String)
  • ListUnsubscribe(ListUnsubscribe As ListUnsubscribe)

複数停止

  • Cc(i As Long, ByVal Email As String)
  • Let Bcc(i As Long, ByVal Email As String)
  • Attachments(i As Long, ByVal FilePath As String)

メソッド

  • Sub From(Email As String, Optional Name As String = "")
  • Sub Email(ByVal Email As String, Optional ByVal InsertCode As Dictionary = -1)

コード例

Dim Mail As Mail
Set Mail = Client.Mail

Mail.From "info@example.com"
Mail.Subject = "テストメール from Excel"
Mail.TextPart = "メールの本文です __name__, __name2__"

Dim InsertCode As Dictionary
Set InsertCode = New Dictionary
InsertCode.Add "name", "Test"
InsertCode.Add "name2", "Test 2"

Mail.Email "user@example.jp", InsertCode

メールを送信する

後は Send メソッドでメールを送信します。引数なしで、即送信されます。宛先が1件だった場合にはトランザクションメールとして、複数の場合はバルクメールとして送信されます。

バルクメールの場合、宛先が50件を超えるとCSVアップロードになります。とはいえ、実装時には気にする必要はありません。

If Mail.Send Then
	' 送信成功
Else
	' 送信失敗
	' Mail.Error でDirectory型のエラーメッセージ
End if

時間を指定する場合には、Date型を引数として適用します。

Dim dtDate as Date
dtDate = DateAdd("n", 5, Now) ' 5分後に送信
If Mail.Send(dtDate) Then
	' 送信成功
Else
	' 送信失敗
	' Mail.Error でDirectory型のエラーメッセージ
End if

送信成功した場合は Mail.DeliveryId に送信IDが入ります。失敗した場合には Mail.Error にエラー情報が入ります。これはエラー内容がDictionary型で入っています。

Debug.Print JsonConverter.ConvertToJson(Mail.Error)

コードについて

コードはGitHubにアップしてあります。ライセンスはMIT Licenseになります。

blastengineMania/blastengine-vba: blastengineのVBA SDKです

まとめ

blastengineには他にも即時送信メールを使ったり、ListUnsubscribeヘッダー機能などもあります。これらの機能も随時実装していきますので、ぜひ皆さんのシステム開発に役立ててください。

エンジニア向けメール配信システム「ブラストエンジン」

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?