概要
サクラエディタでメールを送信するマクロを参考に、EmEditor のマクロとして1から作成したものです。オリジナルの著作権はぷーる氏にあります。
以下のソースを mail.jsee などの名前で保存して、設定を編集してお使いください。「デフォルトのヘッダ」は、マクロを1回実行すると挿入されるヘッダです。ヘッダが挿入された状態でもう1回実行するとメールが送信されます。「SMTPサーバーの設定」はお使いのSMTPサーバーの設定に合わせて変更してください。
ソース
var header = { // デフォルトのヘッダ
From: "[email protected]",
To: "[email protected]",
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();
}
