Nodemailerでメールを送る方法


Nodemailerの作者は、それがケーキの一部を電子メールを送信することを言う.彼らが料理か食について話しているかどうか見ましょう🙂 この記事のアイデアは、電子メール送信のためのNodemailerを使用する方法を説明することです.我々は、主にSMTPとHTMLの側面に焦点を当てますが、すべてのnodemailer機能の概要も行います.また、このチュートリアルでは、準備し、あなたのノードを送信する電子メールメッセージをテストするのに役立ちます.JSアプリケーション.
あなたが完全な記事を読みたいならば、MailtrapのブログでそれをチェックしてくださいHow to Send an Email with Nodemailer

nodemailerの使い方


インストール
NodeDailerを使用して起動するために必要な唯一のものはNodeです.jsバージョン6.0以上.NodeMailer自体をインストールする必要がありますが、それは本当にNPMや糸のパッケージマネージャで簡単です.次のコマンドをノードに実行します.コマンドプロンプトnpm install nodemaileroryarn add nodemailer完了すると、次のようにアプリケーションに追加します.var nodemailer = require('nodemailer');あるいはこれがESモジュールを使っているならば:import nodemailer from ‘nodemailer’;

メッセージの送信


Nodemailerとのメッセージを送信するには、3つの主要な手順があります.
ステップ1.トランスポーター
SMTPは最も一般的なトランスポーターです、そして、以下で、我々はより詳細にそれを説明するだけでなく、いくつかの例を示します.しかし、他の利用可能なオプションのリストがあります.
  • ビルトイン輸送
  • sendmail、単純なメッセージのための定期的なsendmailコマンド.PHPのmail ()関数と似ています
  • SES、それらを送信することにより、メールの大きなトラフィックを処理するAmazon SES
  • stream、テスト目的のためのバッファ、メッセージを返す.
  • -外部転送.簡単に言えば、あなた自身の交通手段を作ることができます
    詳しくはNodemailer documentation .
    SMTPでは、すべては非常に簡単です.ホスト、ポート、認証の詳細とメソッドを設定し、それです.SMTP接続がこの段階で正しいことを確認するのも役に立つでしょう.
    transporter.verify(function(error, success) {
       if (error) {
            console.log(error);
       } else {
            console.log('Server is ready to take our messages');
       }
    });
    
    

    どのようにNodemailerでメールをテストするには?


    Nodemailerで送信された電子メールをテストするにはMailtrap , 事前生産環境における複雑な電子メールテストのためのオンラインツールそれは私たちのメッセージをキャッチし、どのように実際のメールクライアントで見て表示し、分析し、デバッグを支援します.MailTapもBCCのテストオプションを提供し、他のチームのメンバーと同様に、実際の検証アドレスに転送メールを使用して電子メールのテスト結果を共有することができます.
    あなたはまだアカウントを持っていない場合でも、全体の設定プロセスはわずか数分かかります.Mailtrap定期的にSMTPサーバーとして統合されます.すばやくsign up (無料です)、受信トレイ内のSMTP設定タブに移動し、必要な設定をコピーし、アプリケーションスクリプトに挿入します.
    MailTrapはnodemailerとの統合を使用する準備ができています:統合セクションからそれを選択し、アプリケーションのコードに挿入します.トランスポーターとsyntaxis属性が既にあります:
    var transport = nodemailer.createTransport({
      host: "smtp.mailtrap.io",
      port: 2525,
      auth: {
        user: "1a2b3c4d5e6f7g", //generated by Mailtrap
        pass: "1a2b3c4d5e6f7g" //generated by Mailtrap
      }
    });
    
    さもなければ、あなたはEtherealに自動生成された電子メールテストアカウントを使うことができます.
    最近、Nodemailerが導入しましたNodemailerApp . sendmailの置換を提供しますが、まずはメールをデバッグするように設計されています.NoDemailerApp SMTPとPOP 3ローカルサーバー、Catchallメールサービス、電子メールのプレビュー機能と一緒に.
    手順2.nodemailerメッセージオプションを設定する
    この時点で、送信者、メッセージ受信者、およびメッセージの内容を指定する必要があります.
    Unicodeがサポートされているので、Emojisを含めることができますので、覚えておいてください!
    HTMLとしてフォーマットされたテキストを送信するには、余分な属性は必要ありません.HTML属性を持つメッセージにHTML本体を置くだけです.高度なテンプレートの場合は、添付ファイルを追加し、イメージを埋め込むことができます.まずは簡単なメッセージオプションの例を見てみましょう.
    var mailOptions = {
        from: '"Example Team" <[email protected]>',
        to: '[email protected], [email protected]',
        subject: 'Nice Nodemailer test',
        text: 'Hey there, it’s our first message sent with Nodemailer ;) ',
        html: '<b>Hey there! </b><br> This is our first message sent with Nodemailer'
    };
    
    での添付ファイル
    次の主なプロパティを使用して、NodeDailer内のメッセージにデータの種類を追加できます.
  • ファイル名:添付ファイルの名前.ここでは、Unicodeを使用することもできます.
  • 内容:添付ファイルの本文.文字列、バッファ、ストリームを指定できます.
  • path :ファイルへのパス.これは大きな添付ファイルのための良いオプションです.
  • 添付ファイルURL .データURIもサポートされています.
  •  list: {
                // List-Help: <mailto:[email protected]?subject=help>
                help: '[email protected]?subject=help',
    
                // List-Unsubscribe: <http://example.com> (Comment)
                unsubscribe: [
                    {
                        url: 'http://example.com/unsubscribe',
                        comment: 'A short note about this url'
                    },
                    '[email protected]'
                ],
    
                // List-ID: "comment" <example.com>
                id: {
                    url: 'mylist.example.com',
                    comment: 'my new list'
                }
            }
        };
    
    オプションのプロパティを使用すると、特定のコンテンツタイプまたはインラインイメージを追加できます.
    ContentType :設定しない場合は、filenameプロパティから推論されます
    ` // An array of attachments
        attachments: [
            // String attachment
            {
                filename: 'notes.txt',
                content: 'new important notes',
                contentType: 'text/plain' // optional, would be detected from the filename
            },
    
    `
    HTMLメッセージのインラインイメージ.HTMLメールに画像を添付する詳細については、この投稿を読んでください.CID値は一意であるべきです.
    cid: '[email protected]' // should be as unique as possible
                },
    
                // File Stream attachment
                {
                    filename: 'matrix neo.gif',
                    path: __dirname + '/assets/neo.gif',
                    cid: '[email protected]' // should be as unique as possible
                }
            ],
    
    エンコーディング:コンテンツの文字列型に追加できます.設定したエンコーディング値(base 64、binaryなど)に従って、コンテンツをバッファ型にエンコードします
         `   // Binary Buffer attachment
            {
                filename: 'image.png',
                content: Buffer.from(
                    'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/' +
                        '//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U' +
                        'g9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC',
                    'base64'
                )`
    
    ステップ3.sendmail ()でメッセージを配送する
    トランスポーターを作成し、メッセージを設定すると、sendmail ()メソッドを使用して送信できます.
    transport.sendMail(mailOptions, (error, info) => {
            if (error) {
                return console.log(error);
            }
            console.log('Message sent: %s', info.messageId);
    });
    

    nodemailer機能


    我々はどのように作成し、SMTPを介してnodemailerで電子メールを送信するには、コンテンツの種類を実験:HTML、テーブル、リスト、添付ファイル、および埋め込み画像をカバーしている.Nodemailerについての良いことは、さまざまなオプションと設定の束を提供するので、あなたの電子メールのすべての部分をカスタマイズすることができますです.
    nodemailerの例を取得し、nodemailerでデバッグオプションについての詳細を学ぶためにHow to Send an Email with Nodemailer 記事.