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生まれ。WEBエンジニア。

技術スタック:TypeScript/Next.js/Express/Docker/AWS

フォローする
フォローする

コメント

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