sendmailマクロ
元ネタ
ttp://muumoo.jp/news/2006/09/13/0sakuramailmacro.html
あんまり検証してないけどつかえるよ。
// デフォルトのメールヘッダ
var defaultHeader = {
from: "[email protected]",
to: "[email protected]",
cc: "",
bcc: "",
subject: "hoge"
};
// SMTP サーバ設定
var smtp = {
host: "smtp.example.com",
port: "25",
ssl: false,
auth: false,
user: "",
pass: ""
};
//*for Gmail
var smtp = {
host: "smtp.gmail.com",
port: "465",
ssl: true,
auth: true,
user: "[email protected]",
pass: "pass"
}
*/
// 選択範囲 (なければ全選択) の文字列を取得し、改行で分解
if(document.selection.Text == ""){
document.selection.selectAll();
}
var text = document.selection.Text;
var lineCode = "\r\n";
var lines = text.split(lineCode);
// ヘッダとボディを message に格納
var message = new Object();
var bodyFound = false;
for(var i = 0; i < lines.length; i++)
{
if(!bodyFound)
{
if(lines[i].match(/^from: (.*)$/i)) message["from"] = RegExp.$1;
if(lines[i].match(/^to: (.*)$/i)) message["to"] = RegExp.$1;
if(lines[i].match(/^cc: (.*)$/i)) message["cc"] = RegExp.$1;
if(lines[i].match(/^bcc: (.*)$/i)) message["bcc"] = RegExp.$1;
if(lines[i].match(/^subject: (.*)$/i)) message["subject"] = RegExp.$1;
if(lines[i] == ""){ bodyFound = true; message["body"] = ""; }
}
else
{
message["body"] += lines[i] + lineCode;
}
}
if(5 <= getLength(message))
{
send_mail(message);
document.selection.Collapse();
alert("メールを送信しました。");
}
else
{
// ヘッダが足りない場合、デフォルトのヘッダを挿入
var mailHeader =
"From: " + defaultHeader["from"] + lineCode +
"To: " + defaultHeader["to"] + lineCode +
"Cc: " + defaultHeader["cc"] + lineCode +
"Bcc: " + defaultHeader["bcc"] + lineCode +
"Subject: " + defaultHeader["subject"] + lineCode +
lineCode;
document.write(mailHeader + text);
}
// メール送信
function send_mail(message)
{
var mail = new ActiveXObject("CDO.Message");
// message
mail.From = message["from"];
mail.To = message["to"];
mail.Cc = message["cc"];
mail.Bcc = message["bcc"];
mail.Subject = message["subject"];
mail.TextBody = message["body"];
mail.TextBodyPart.Charset = "ISO-2022-JP";
var schemas = "http://schemas.microsoft.com/cdo/configuration/";
var fields = mail.Configuration.Fields;
// config
fields.Item(schemas + "sendusing") = 2;
fields.Item(schemas + "smtpconnectiontimeout") = 30;
// server
fields.Item(schemas + "smtpserver") = smtp["host"];
fields.Item(schemas + "smtpserverport") = smtp["port"];
fields.Item(schemas + "smtpusessl") = smtp["ssl"];
if(smtp["auth"])
{
// authentication
fields.Item(schemas + "smtpauthenticate") = true;
fields.Item(schemas + "sendusername") = smtp["user"];
fields.Item(schemas + "sendpassword") = smtp["pass"];
}
// send
mail.Configuration.Fields.Update();
mail.Send();
}
// 連想配列の要素数を取得
function getLength(hash)
{
var count = 0;
for(key in hash){
count++;
}
return count;
}
// メッセージボックス
function alert(message) {
var shell = new ActiveXObject("WScript.Shell");
shell.Popup(message, 0, "", 0);
}
添付ファイル
