それぞれ特徴がありますが、PHP と VBScript は COM しか扱えませんが、PowerShell は、Framework ベースなので、ついでに COM を扱えるという立場です。テストする意味はあまり無いと思いますが、Basp21 の DLL を直接呼び出して実行も可能でしょうし、VB や C# のコードを書いてそちら側で実行させる事もできますし、さらにその場合は exe 形式にしてしまえるので今までのスクリプトとは少し意味が違ってきています。
関連する記事
PowerShell2.0 : VB.net と C# のコードをビルドして exe を作成する
SMTP サーバーは、さくらインターネットを使用しています
【さくらのメールボックス】基本仕様
PowerShell + Basp21 メール送信
▼ 32 ビットの PowerShell を実行する為、バッチファイルに以下のように記述します
%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell -NoProfile -ExecutionPolicy Unrestricted "./basp_mail.ps1"
basp_mail.ps1
<#
オブジェクト作成
#>
$Basp21 = New-Object -ComObject "Basp21"
$user = "ユーザー"
$to = "宛先"
$pass = "パスワード"
$SMTPServer = "$user.sakura.ne.jp:587"
$MailTo = "あなた <$to>"
$MailFrom = "わたし <$user@$user.sakura.ne.jp>"
$MailFrom += "`t$user@$user.sakura.ne.jp:$pass"
$ErrMessage = $Basp21.SendMail(
$SMTPServer,
$MailTo,
$MailFrom,
"こんにちは",
"日本語表示`n日本語表示",
""
)
if ( $ErrMessage -ne "" ) {
$ErrMessage
}
else {
"メール送信が終了しました。"
}
VBScript + Basp21 メール送信
▼ mail.bat( 64ビット PC からの実行 )
%systemroot%\syswow64\cscript.exe basp_mail.vbs
basp_mail.vbs
v_user = "ユーザー"
v_to = "宛先"
v_pass = "パスワード"
Set Basp21 = CreateObject( "Basp21" )
SMTPServer = v_user & ".sakura.ne.jp:587"
MailTo = "あなた <" & v_to & ">"
MailFrom = "わたし <" & v_user & "@" & v_user & ".sakura.ne.jp>"
MailFrom = MailFrom & vbTab & v_user & "@" & v_user & ".sakura.ne.jp:" & v_pass
ErrMessage = Basp21.SendMail( _
SMTPServer, _
MailTo, _
MailFrom, _
"こんにちは", _
"日本語表示\n日本語表示", _
"" _
)
if ErrMessage <> "" then
Wscript.Echo ErrMessage
else
Wscript.Echo "メール送信が終了しました。"
end if
PHP + Basp21 メール送信
▼ BASP21 に渡すテキストは SHIFT_JIS で、32ビットの PHP で実行します。
<?php
$user = "ユーザー";
$to = "宛先";
$pass = "パスワード";
$Basp21 = new COM( "Basp21" );
$SMTPServer = "$user.sakura.ne.jp:587";
$MailTo = "あなた <$to>";
$MailFrom = "わたし <$user@$user.sakura.ne.jp>";
$MailFrom .= "\t$user@$user.sakura.ne.jp:$pass";
$ErrMessage = $Basp21->SendMail(
$SMTPServer,
$MailTo,
$MailFrom,
"こんにちは",
"日本語表示\n日本語表示",
""
);
if ( $ErrMessage != "" ) {
print $ErrMessage;
}
else {
print "メール送信が終了しました。";
}
?>