作成 2011.12.29
更新 2012.01.04
Node.js でメール送信サンプル
UTF-8 限定。タイトルは英語のみ。エラーが起きたら終了。
CentOS 5, Node.js 0.6.6 で確認。
コード
var smtp_host = '127.0.0.1';
var smtp_from = 'mail-from@example.com';
var smtp_to = 'mail-to@example.com';
send_mail(smtp_host,smtp_to,smtp_from,'test subject','test body2 日本語');

function send_mail(mail_server,mail_to,mail_from,mail_subject,mail_body){
  var net = require('net');
  var client_state = 0;
  var client = net.connect(25,mail_server,function(){
    console.log('connected');
    client.setTimeout(60*1000,function(){
      console.log('Timeout');
      client.end();
    });
  });
  client.on('data',function(data){
    var sv_res = data.toString();
    var arr_str = sv_res.split(' ');
    console.log('SV> '+sv_res);
    if(isNaN(arr_str[0])){ return; }
    var int_code = parseInt(arr_str[0]);
    var str = 'QUIT';
    if(int_code == 221){ return; }
    if(int_code == 220){
      str = 'HELO localhost.localdomain';
    }else if(int_code == 250){
      if(client_state ==  0){
        str = 'MAIL FROM: '+mail_from;
        client_state = 1;
      }else if(client_state == 1){
        str = 'RCPT TO: '+mail_to;
        client_state = 2;
      }else if(client_state == 2){
        str = 'DATA';
        client_state = 3;
      }
    }else if(int_code == 354){
      client.write('From: '+mail_from+'\r\n');
      client.write('To: '+mail_to+'\r\n');
      client.write('Subject: '+mail_subject+'\r\n');
      client.write('Content-Type: text/plain; charset="UTF-8"\r\n');
      client.write('\r\n'+mail_body+'\r\n');
      str = '.';
    }
    client.write(str+'\r\n');
    console.log('<CL '+str);
  });
  client.on('end',function(){
    console.log('client disconected');
  });
}
実行結果
connected
SV> 220 mail.example.com ESMTP Postfix

<CL HELO localhost.localdomain
SV> 250 mail.example.com

<CL MAIL FROM: mail-from@example.com
SV> 250 2.1.0 Ok

<CL RCPT TO: mail-to@example.com
SV> 250 2.1.5 Ok

<CL DATA
SV> 354 End data with <CR><LF>.<CR><LF>

<CL .
SV> 250 2.0.0 Ok: queued as 8E0622E0D0

<CL QUIT
SV> 221 2.0.0 Bye

client disconected
タグ: Node.js

©2004-2017 UPKEN IPv4