【メールの同胞配信システムについて】(2)要素技術の調査

■ メールに設定することで知っておくべき事柄

ほとんどの人はメールクライアントを設定する際にあまり気を遣っていないかもしれない。知らないですむことも多いはずだから。

しかし、実際にはいくつもの設定が求められている。

SMTPサーバーのドメイン名、ポート番号、SSL、認証などに関する情報になる。

下記を参考にしながら確認しておくことが必要となる。

■ SMTPサーバーはどこにある?

もともと、CDOはExchangeサーバーで動作させるオブジェクトとして用意されていたと考えられる。それは、下記の記載からもうかがえる。

CDO for Windows 2000

CDO for Windows 2000 は、CD0 2.0 または CDOSYS.DLL と呼ばれることもあります。この CDO for Windows 2000 の目的は、Windows 2000 でメッセージング アプリケーションを開発するためのオブジェクト モデルを提供することにあります。CDOSYS は、Simple Mail Transfer Protocol (SMTP) と Network News Transfer Protocol (NNTP) に基づいており、Microsoft Windows 2000 Server のインストールによりシステム コンポーネントとして利用することができます。これは、Windows 2000 Server での、メール配信用または Web を利用するメッセージング アプリケーションを作成するための標準 API です。

参照:https://msdn.microsoft.com/ja-jp/library/ms978698.aspx

 

したがって、デフォルト設定は、プログラムを起動するパソコン(サーバー)にSMTPサーバーがあるという設定と思われる。

今回作成する、ツールは前提として外部のSMTPサーバーを使うという前提なので下記の設定が必要になる。

  .Item(CdoConfiguration.cdoSendUsingMethod) = CdoSendUsing.cdoSendUsingPort

 

設定する値はenumで下記の数値となる。

Name Value Description
cdoSendUsingPickup 1 Send message using the local SMTP service pickup directory.
cdoSendUsingPort 2 Send the message using the network (SMTP over the network).

参照:https://msdn.microsoft.com/en-us/library/ms527265(v=exchg.10).aspx

これを怠ると、「”SendUsing”の構成値は無効です。」というメッセージが表示される。

■ サーバー設定、SSL

サーバーの基本設定は、まずはサーバー名とポート番号になる。

サーバー名とポート番号は、各人が契約しているプロバイダーからの情報になる。

一般的には、25だが、セキュリティの関係で他のポート番号を使う場合もある。

システムでは外部設定にしてある。下記のコードで実装している。

 

.Item(CdoConfiguration.cdoSMTPServer) = smtpServer ‘SMTPサーバ名

.Item(CdoConfiguration.cdoSMTPServerPort) = portNo ‘ポート№

 

ポート番号は標準では25だが、通信上のセキュリティの問題を抱えている。

これに対処するために、SMTP over SSL が使われることがあります。

当社の使用しているサイトであれば、ポート番号465を使います。

そのため、以下の設定を行います。

.Item(CdoConfiguration.cdoSMTPUseSSL) = True

 

参考:https://rms-digicert.ne.jp/howto/basis/mail_tls_ssl.html

引用:

SMTP over SSL

メールクライアントとメールサーバーとの通信で利用されるだけでなく、メールリレーでのメールサーバー間の通信にも利用されます。

SMTP over SSLには、STARTTLSという接続方法と465番ポートを使う方法とがあります。

465番ポートを使う方法

最初から暗号化された接続が行われます。

■ 認証

メールを受信する際には、プロバイダが発行しているID・パスワードを使用し認証が必要とされるが、メールを送信する際は特に認証がない。そのため迷惑メール送信に悪用されるケースが多く見られ、一種の脆弱性とも受け取れる。

そこで考えられた技術として、送信時にもID・パスワードを必要とさせることで、サーバー、クライアント間で認証されたメールのみを許可することができるものである。

SMTP認証と呼ばれるものになる。

多くのプロバイダーで採用されている。

本システムでも、これを前提としている。

下記が対応するコードとなる。

.Item(CdoConfiguration.cdoSMTPAuthenticate) = True

.Item(CdoConfiguration.cdoSendUserName) = loginId

.Item(CdoConfiguration.cdoSendPassword) = loginPassword

 

■ サーバー設定のその他の設定

.Item(CdoConfiguration.cdoSMTPConnectionTimeout) = 60 ‘タイムアウト

.Item(CdoConfiguration.cdoLanguageCode) = CdoCharset.cdoShift_JIS ‘文字セット指定

 

文字セットは、以下のように定義されている。

 

CdoCharset Module

Constant Value
CdoBIG5 “big5”
CdoEUC_JP “euc-jp”
CdoEUC_KR “euc-kr”
CdoGB2312 “gb2312”
CdoISO_2022_JP “iso-2022-jp”
CdoISO_2022_KR “iso-2022-kr”
CdoISO_8859_1 “iso-8859-1”
CdoISO_8859_2 “iso-8859-2”
CdoISO_8859_3 “iso-8859-3”
CdoISO_8859_4 “iso-8859-4”
CdoISO_8859_5 “iso-8859-5”
CdoISO_8859_6 “iso-8859-6”
CdoISO_8859_7 “iso-8859-7”
CdoISO_8859_8 “iso-8859-8”
CdoISO_8859_9 “iso-8859-9”
cdoKOI8_R “koi8-r”
cdoShift_JIS “shift-jis”
CdoUS_ASCII “us-ascii”
CdoUTF_7 “utf-7”
CdoUTF_8 “utf-8”

 

参照:https://msdn.microsoft.com/en-us/library/ms527267(v=exchg.10).aspx

 

ただし、デフォルトでは“ja”となっている。再確認が必要かもしれない。

 

■ メールごとに設定が必要なこと

 

メールごとに以下を設定する必要がある。

 

        .MimeFormatted = True ‘MIMEを使って書式設定

.From = loginId

.To = Sheets(tname).Cells(5, 2)

.Subject = Sheets(tname).Cells(5, 4)

.TextBody = “本文”

 

通常の処理ではCcやBccも必要かもしれないが、本システムでは不要になるだろう。

 

■ 添付ファイルの設定

 

添付ファイルの数だけ、下記を繰り返す。

 

cdoMsg.AddAttachment 添付ファイル名

 

■ 次の課題

 

さて、単発のメールであればよいのだが、連続して送信する場合、オブジェクトの使い回しができるかになる。

オブジェクトにはClearというメソッドがないので、多分大丈夫だろう。

さて。

 

2018年6月12日

Be the first to comment

Leave a Reply