SQLの窓

2018年04月21日


あらためて、XAMPP に入ってる sendmail.exe をバッチファイルから動かして日本語のメールを送信する

XAMPP とは言っても、Pleiades Eclipse 4.7 に同梱されているものを使用しています。

▼ sendmail.exe は、fake sendmail for windows と呼ばれるアプリケーションの事です。
fake sendmail for windows を使って、PHP でごく普通に( mb_send_mail で )メール送信 : Gmail なので ssl(465)

上のリンク先では、作者さんの単純なバッチファイルを実行していましたが、もうちょっときちんと日本語を送れるようにしようと思って整理してみました。

使用する SMTPサーバー

まずは、テストとして Gmail を使用します。sendmail.exe と同じフォルダに sendmail.ini があるので必要な情報を書き込みます。
smtp_server=smtp.gmail.com
smtp_port=465
auth_username=ユーザ@gmail.com
auth_password=パスワード
そして、安全性の低いアプリの許可を『有効』にします Gmail を使用する場合は、この設定を ON にしておく必要があります。とりあえず動作したら、他のメールサーバで再度テストして必要ならばその環境で運用を行います。 fake_sendmail.bat
@ECHO OFF

ECHO From: ユーザ@gmail.com > %TEMP%\temp.mail
ECHO To: 送り先メールアドレス >> %TEMP%\temp.mail
ECHO Subject: =?ISO-2022-JP?B?GyRCJWEhPCVrJE43b0w+JHJGfEtcOGwkR0F3JGwkayRoJCYkS0pRNDkkNyReJDkbKEI=?= >> %TEMP%\temp.mail

REM 以下は改行
ECHO.>> %TEMP%\temp.mail

REM JIS のテキストを追加コピー
COPY %TEMP%\temp.mail /B + jis.txt /B %TEMP%\temp.mail /B > nul

sendmail -t < %TEMP%\temp.mail

REM DEL %TEMP%\temp.mail


※ From: は無くても Gmail を使用しておれば、自動的に補完されるようです。
※ エクスプローラのアドレスバーで %TEMP% と入力すれば出力ファイルを参照できます。
※ Subject の内容は、『テキスト変換サービス』の『メール用』で変換したものです。
※ ECHO. は、コマンドプロンプトでの改行になります。
※ > nul でコピーコマンドのメッセージを抑制しています。
※ copy で追加している jis.txt は、Terapad を使用して JIS で保存したテキストです。


運用で使うのであれば

なんらかの方法で、jis.txt を変更して定期でメールを送る事が可能です。ただし、PC は常に電源が入っていて、タスクスケジューラにこのバッチファイルが登録されている必要があります。

その場合、タスクスケジューラの開始オプションで作業フォルダを指定するか jis.txt をフルパスで指定するかどちらかを選択する必要があります。




posted by lightbox at 2018-04-21 18:49 | Pleiades | このブログの読者になる | 更新情報をチェックする

VBScript : XCOPYで新しいファイルのみバックアップする為のスクリプトを作成するスクリプト



ディレクトリ選択でバックアップするディレクトリを決定し、カレントディレクトリにバックアップする為のスクリプトを作成します。

▼ 実行時に表示されるディレクトリ選択


そのスクリプトを実行すると、スクリプトがあるカレントのディレクトリに目的のディレクトリをバックアップとしてコピーします。
XCOPY なので、2回目以降は新しいファイルのみコピーします

▼ 使用するオプション
/D : コピー元の日付がコピー先の日付より新しいファイルだけをコピーします
/E : ディレクトリまたはサブディレクトリが空であってもコピーします
/C : エラーが発生してもコピーを続けます
/S : 空の場合を除いて、ディレクトリとサブディレクトリをコピーします
/Y : 既存のファイルを上書きする前に確認のメッセージを表示しません

一番重要なのは、/D です。/S /E で、存在するディリクトリはすべてコピーされます。/E /Y によって、最後まで停止する事なく実行されます。

追加で使う事が想定されるオプション

コピーしたくないディレクトリやファイルがある場合、以下のように指定します。

/EXCLUDE:ファイルのパス

ファイルのパスが示すテキストファイル内に、除外するディレクトリやファイルにある文字列の一部を1 行に 1 つずつ記述します。

その文字列が、コピー対象ファイルの絶対パスの一部と一致した場合、そのファイルはコピーから除外されます。たとえば、"\obj\" という文字列を指定するとディレクトリ obj の下の全ファイルが除外 されます。".obj" という文字列を指定すると .obj という拡張子のファイルがすべて除外されます

ソースコード
' ***********************************************************
' 処理開始
' ***********************************************************
Set Fso = Wscript.CreateObject( "Scripting.FileSystemObject" )
Set Shell = Wscript.CreateObject( "Shell.Application" )

' ***********************************************************
' 実行中ディレクトリの取得
' ***********************************************************
strPath = Wscript.ScriptFullName 
Set objFile = Fso.GetFile( strPath )
strBackupFolder = Fso.GetParentFolderName( objFile )

' ***********************************************************
' バックアップ対象ディレクトリの取得
' ***********************************************************
' マイ コンピュータを基準にディレクトリ選択
Set objFolder = Shell.BrowseForFolder( 0, "バックアップするフォルダを選択してください", &H4B, _
	"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" )
if objFolder is nothing then
	WScript.Quit
end if
if not objFolder.Self.IsFileSystem then
	WScript.Echo "ファイルシステムではありません"
	WScript.Quit
end if

strTargetFolder = objFolder.Self.Path
strName = Replace( strTargetFolder, ":", "" )
strName = Replace( strName, "\", "_" )
strName = Replace( strName, " ", "" )
strName = "BK_" & strName

' ***********************************************************
' スクリプト作成
' ***********************************************************
Set OutFile = Fso.OpenTextFile( strBackupFolder & "\" & strName & ".vbs", 2, True )

OutFile.WriteLine "strName = """ & strName & """"
OutFile.WriteLine "strTarget = """ & strTargetFolder & """"
OutFile.WriteLine "strBackupFolder = """ & strBackupFolder & """"
OutFile.Write "if MsgBox( strTarget & vbCrLf & ""のバックアップを開始します。よろしいですか? (保存先:"" & strBackupFolder & ""\"" & strName & "")"""
OutFile.WriteLine ", 1 ) = 2 then"
OutFile.WriteLine "	Wscript.Quit"
OutFile.WriteLine "end if"

OutFile.WriteLine "Set WshShell = Wscript.CreateObject( ""WScript.Shell"" )"
OutFile.Write "ExecCommand = ""cmd.exe /C """"xcopy.exe """""" & strTarget & """""" """""" & strBackupFolder & ""\"" & strName & ""\"""""
OutFile.WriteLine " /D /E /C /S /Y & PAUSE"""""""
OutFile.WriteLine "Call WshShell.Run( ExecCommand )"

OutFile.Close

WScript.Echo "バックアップスクリプト : " &  strName & ".vbs" & " を作成しました"

更新履歴
2009-06-28 : 記事作成
2013-04-02 : ダウンロード追加
2015-08-07 : ダウンロードを zip 化( Google Chrome 対応 )
2018-04-21 : 作成したスクリプト内の保存するフォルダ名を固定化( 変更を容易にするため )



posted by lightbox at 2018-04-21 12:00 | VBScript | このブログの読者になる | 更新情報をチェックする

職場で Windows10 を運用を始めるにあたって、いろいろ最近必要だった事のまとめ

URI スキーム

ファイル名を指定して実行から Windows10 特有の設定画面への移動方法ですが、Windows10 のアップデートに伴ってバージョンを確認する為に必要でした。とにかく、どこかの画面に移動するのに時間がかかるので。
▼ バージョン
ms-settings:about

▼ Windows Update
ms-settings:windowsupdate
URI スキーム一覧( Windows 設定アプリの起動 ) ファイル名を指定して実行 一般的には .exe の実行ですが、shell コマンドというようなものもあります。
▼ スタートアップフォルダを開く
shell:startup

▼ コントロールパネル
control

▼ コマンドプロンプト、メモ帳、ペイント、電卓
cmd
notepad
mspaint
calc
エクスプローラのアドレスバー sendto で、送るフォルダを開く( ここにエディタのショートカットを置く ) %TEMP% でテンポラリフォルダを開く コントロールバネル デスクトップのアイコンで、コントロールパネル用のアイコンを表示するようにしておく。 コントロールパネルの右上の『検索』で、『グループ』と入力すると『グループポリシーエディタのリンクが現れるショートカットキー エクスプロラーやサービス一覧等で、CTRL 押しながら + キーで、内容でぴったり列の幅が整列される ( ※リスト形式の各所で有効 ) Windowsキー + E でエクスプローラ Windowsキー + R でファイル名を指定して実行 エクスプローラの基本設定 毎回最初にする内容です。設定画面は、表示タブのツールバーの右端から スタートメニュー(右クリック) PowerShell をコマンドプロンプトに変更。どうせ、エクスプローラから SHIFTキー押しながらフォルダを右クリックすると PowerShell がそこで実行されるので、これはコマンドプロンプトでいいと思います。 管理者権限で実行 既に実行しているアプリがタスクバーで表示されている状態で、CTRL+SHIFT を押しながらタスクバーのアプリをクリックします( これが一番簡単 ) ※SHIFT キーのみだと、同じアプリが起動 コマンドプロンプト(純正) Windows のコマンドプロンプトから普通に実行できるコマンドです。
▼ 他の PC の共用の確認
net view \\PC名

※ 一般的には、コントロールパネルの『資格情報マネージャー』と併用します

▼ 80番ポートを使用しているアプリケーションの確認
netstat -nao | findstr :80

※ 一番最後に PID があるので、それでタスクマネージャの『詳細タブ』から確認
※ PID のタイトルをクリックしてソートします
コマンドプロンプト(アプリ依存) なんらかのソフトウェアがインストールされているという前提の処理です。
▼ Visual Studio のコマンドプロンプトから exe 等の 32ビットか 64ビットかの判断
dumpbin /HEADERS "ファイルのフルパス" | findstr machine

※ ファイルのフルパスは、SHIFT キーを押しながらファイルを右クリックして『パスのコピー』

▼ 自分の PC の SQLExpress の sa のパスワードを空にする
sqlcmd -E -S .\SQLEXPRESS
で、接続してから以下を入力( GO で実行 )して、終わったら quit で終了
ALTER LOGIN sa WITH PASSWORD = ''
GO

※ 昔はそもそも空だったんですよ(そのままシステムが続いている)

▼ Oracle11g の Scott を使用可能にします
alter user scott account unlock; 
alter user scott identified by "tiger";

※ 二つ目は、期限切れの対応です。
関連する記事 Oracle 11g 学習環境の作成 : SQLPlus の環境作成 Google Chrome 今時は、シークレットモードにしないと終了時に Google からログアウトされないので、引数使って最初からシークレットモードで。普通のは、『新しいウインドウ』で開いたらいいです。(CTRL + N)
C:\...\chrome.exe --incognito
トラブル MySQLの ODBCが インストールできない 対応 : VC++ 2013のランタイムをダウンロードしてインストール キーボードに触るとWindows10 が起動する。シャットダウンしたのに勝手に電源が入った上に立ち上がらない。 その他 デスクトップのコンピュータアイコンにメニューを追加する テストにはまだまだ使える(重宝する) AN HTTP Server の正しい使用方法 SQLExpress の接続設定のヒント
posted by lightbox at 2018-04-21 11:29 | Pleiades | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり