概要
サクラエディタでメールを送信するマクロを参考に、EmEditor のマクロとして1から作成したものです。オリジナルの著作権はぷーる氏にあります。
以下のソースを mail.jsee などの名前で保存して、設定を編集してお使いください。「デフォルトのヘッダ」は、マクロを1回実行すると挿入されるヘッダです。ヘッダが挿入された状態でもう1回実行するとメールが送信されます。「SMTPサーバーの設定」はお使いのSMTPサーバーの設定に合わせて変更してください。
ソース
var header = { // デフォルトのヘッダ From: "sample@example.com", To: "sample@example.com", Cc: "", Bcc: "", Subject: "" }; var smtp = { // SMTPサーバーの設定 smtpserver: "smtp.example.com", // サーバー名 smtpserverport: 25, // ポート smtpusessl: false, // SSLを使う (true/false) smtpauthenticate: false, // SMTP認証する (true/false) sendusername: "", // ユーザー名 sendpassword: "" // パスワード }; // 設定ここまで var rHeaderName = "[a-z-]+"; var rHeaderValue = "[^\\r\\n]*(?:\\r?\\n[ \\t]+[^\\r\\n]+)*"; var rHeader = "(?:" + rHeaderName + ":[ \\t]*" + rHeaderValue + "\\r?\\n)+"; var rBody = "(?:.|\\r?\\n)*"; var reHeaderAndBody = new RegExp( "^(" + rHeader + ")\\r+\\n(" + rBody + ")$", "i"); var reHeaderNameAndValue = new RegExp( "^(" + rHeaderName + "):[ \\t]*(" + rHeaderValue + ")$", "img"); if (document.selection.isEmpty) document.selection.SelectAll(); var text = document.selection.Text.replace(/^[\r\n]+/, ""); var m = text.match(reHeaderAndBody); if (m) { document.selection.Collapse(); while (reHeaderNameAndValue.exec(m[1])) { header[RegExp.$1] = RegExp.$2.replace(/^\r?\n[ \t]/mg, " "); } sendMail(m[2]); alert("メールを送信しました"); } else { document.selection.CharLeft(false); for (var key in header) { document.writeln(key + ": " + header[key]); } document.writeln(""); } function sendMail(body) { var mail = new ActiveXObject("CDO.Message"); mail.TextBody = body; mail.TextBodyPart.Charset = "iso-2022-jp"; mail.TextBodyPart.ContentTransferEncoding = "7bit"; for (var key in header) { mail.Fields.Item("urn:schemas:mailheader:" + key) = header[key]; } mail.Fields.Update(); var ns = "http://schemas.microsoft.com/cdo/configuration/"; mail.Configuration.Fields.Item(ns + "sendusing") = 2; mail.Configuration.Fields.Item(ns + "smtpconnectiontimeout") = 30; for (var key in smtp) { mail.Configuration.Fields.Item(ns + key) = smtp[key]; } mail.Configuration.Fields.Update(); mail.Send(); }