ざっくりとした仕組みとして、Evernote側にアカウントごと個別のメールアドレスがありそちらに送信したメールがEvernoteのノートとして投稿される機能だったりします。
メールクライアントでなくてもメールを送信できる装置であれば何でもいけるわけです。以前にPowerShellでメール送信が出来ることを確認しましたので、今回はEvernoteにメールを送信してみたいと思います。
送信先のメールアドレスを確認
Web版のEvernote
- 画面右下のKのマークをクリック
- 設定をクリック
- 画面下部のメールの転送先が送信先のメールアドレスになります。
テキストを送信してみる。
スクリプト
<# PowerShellからEvernoteへメール投稿(テキスト) #>
$server = "smtp.mail.yahoo.co.jp"; # SMTPサーバーアドレス
$port = 587; # SMTPサーバーポート
$username = "xxxxxx" # Yahooアカウントのユーザー名
$password = "******" # Yahooアカウントのパスワード
$from = "xxxxxx@yahoo.co.jp" # 送信元メールアドレス
$to = "xxxxxx@m.evernote.com" # 送信先メールアドレス(Evernoteの転送先アドレス)
$subject = "PowerShellからEvernoteへメール投稿(テキスト)" # 件名
$body = "本文" # 本文
$file = $null # 添付ファイル
#メール送信オブジェクトを生成
$smtp = New-Object Net.Mail.SmtpClient($server, $port);
#SSL通信をしない
$smtp.EnableSsl = $false;
$smtp.Credentials = New-Object Net.NetworkCredential($username, $password);
$str2 = $subject | % {
$s = $_
(1..2) | % {
$s = [Convert]::ToBase64String($enc.GetBytes($s))
$s = ("=?{0}?B?{1}?=" -f "iso-2022-jp", $s)
}
$s
}
$mail = New-Object Net.Mail.MailMessage($from,$to,$str2,$body);
# 添付ファイル
if ($file) {
$o = New-Object Net.Mail.Attachment($file);
$mail.Attachments.Add($o);
}
$smtp.Send($mail);
ご利用の場合はスクリプト内のメールアドレス関連項目を書き変えてください。
$username = "xxxxxx" # Yahooアカウントのユーザー名
$password = "******" # Yahooアカウントのパスワード
$from = "xxxxxx@yahoo.co.jp" # 送信元メールアドレス
$to = "xxxxxx@m.evernote.com" # 送信先メールアドレス(Evernoteの転送先アドレス)
結果
画像ファイルを添付し送信してみる。
スクリプト
テキストを送信してみる。のスクリプトの$file = $null # 添付ファイル
の$nullを添付したい画像ファイルの”パス”に置き換える
結果
感想
まだ試行錯誤の最中ですが、上手くするとWebページのリンクをたどってWebサイトを丸ごとダウンロードし、ダウンロードしたHTMLをEvernoteに投稿するスクリプトが作れそうです。自動Webクリッパー的な代物ですが、Internet ArciveのWayback Machineの個人版的な使い方が出来るのではないかと鋭意作成中です。
Webサイトのダウンロードは結構昔から色々なスクリプト言語で作成したりしていますが、Webサーバの種類ごとの対応やHTML内の文字コード、不完全なHTMLの解析など、色々とハードルが高いです。Webブラウザはこの辺を上手いこと動くように作っていること見ると、ブラウザ作成者に頭が下がる思いです。
ウェブスクレイピングやクローラーなどと同じ技術が必要なわけですが、機械学習との親和性が高いと言われているPythonがデータ収集でウェブスクレイピングを使っていると思われるので、その類のライブラリなども豊富なのではと情報収集をしています。
Outputの選択肢の一つとしてEvernoteが選べると言うだけでスクリプトの可能性が広がります。
コメント