Xサーバー上でNode.js+Nodemailerでメールを送信する

Xサーバーというレンタルサーバー上で

  • Node.js + Nodemailer

を使って、Xサーバーで作ったメールアドレスからメールを送信する方法についてメモ。

 

まず、SSHで以下のコマンドを打って、nodemailerモジュールをインストールします。

npm install nodemailer

 

次に、以下のコードを書きます。

index.js

var nodemailer = require('nodemailer');

//SMTPサーバ基本情報設定
var smtp = nodemailer.createTransport({
  host: "sv●●●●.xserver.jp",
  port: 465,//SSL(TLS)で送信する場合は465、使用しない場合は587
  secure: true,//trueの場合、サーバーへの接続時に接続はTLSを使用する
  auth:{
    user: "ユーザー名",//info@hoge.comみたいなメールアドレスを指定する
    pass: "パスワード"//メールアドレスを作るときに指定したパスワードを指定する
  }
});

//メール情報の作成
var message = {
  from: 'info@hoge.com',//さきほどのユーザー名と同じ
  to: 'test@gmail.com',//送信先
  subject: '件名',//件名
  text: '本文'//本文
};

// メール送信
try{
  smtp.sendMail(message, function(error, success){
      if(error){
          console.log("送信に失敗しました");
          console.log(error.message);
          return;
      }        
      console.log("送信に成功しました");
      console.log(success.messageId);
  });
}catch(e) {
  console.log("例外が発生しました",e);
}

 

最後に、SSHで以下のコマンドを実行すると、メールを送信できます。

node index.js

 

localhostからメールを送信する場合は

//SMTPサーバ基本情報設定
var smtp = nodemailer.createTransport({
  host: "sv●●●●.xserver.jp",
  port: 465,//SSL(TLS)で送信する場合は465、使用しない場合は587
  secure: true,//trueの場合、サーバーへの接続時に接続はTLSを使用する
  auth:{
    user: "ユーザー名",//info@hoge.comみたいなメールアドレスを指定する
    pass: "パスワード"//メールアドレスを作るときに指定したパスワードを指定する
  },
   tls: {
     rejectUnauthorized: false,
   },
});

という感じで、rejectUnauthorizedを付与するとうまく動くっぽいです。

参考:https://stackoverflow.com/questions/46742402/error-self-signed-certificate-in-certificate-chain-nodejs-nodemailer-express

 

おわり

Node.js
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。
2019年くらいからフロントエンドエンジニアを目指している元アフィリエイターです💩

penpenをフォローする
penpenをフォローする
penpenメモ

コメント

タイトルとURLをコピーしました