あなたはを指しますあなたのサービス内のHTTP呼び出しを構築する必要がありますあなたのNode
アプリケーション。
私は最近、GitHub
に、このためgist
を書いた - それはそれのスタイルを私のレーダーにだGist
にフォーマットすみませんAngular 2 call Node Service
。
更新
あなたのノードプロジェクト内で行う必要がありますまず最初は、私はあなたがvar router = express.Router();
を宣言したが、あなたが実際にそれを使用していない気づいroute
に設定されています。
だから私はあなたがこのような何か行うことができ、指定gist
オフに基づいて:
var express = require('express')
var app = express();
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: '[email protected]',
pass: '111111'
}
});
let mailOptions = {
from: '[email protected]',
to: '[email protected]',
subject: 'Test Mailer',
text: 'I am testing Nodemailer to send email.',
};
app.options('/sendmail', function (req, res) {
res.sendStatus(200);
});
app.post('/sendmail', function (req, res) {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:4200'); // Change this to your Angular 2 port number
res.setHeader('Access-Control-Request-Method', '*');
res.setHeader('Access-Control-Allow-Methods', 'POST');
res.setHeader('Access-Control-Allow-Headers', '*');
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log('Message %s sent: %s', info.messageId, info.response);
});
})
を私はあなたのnode
プロジェクトが、この時点であなたのAngular 2
プロジェクトとは別の解決策であると仮定しています。 node
プロジェクトのルートに移動し、node EmailAPI.js
を実行する必要があります。これは、Angular 2
アプリケーションとは別のポートで実行されます。 実行中のポートはnode EmailAPI.js
の後に表示されます。
今、あなたはあなたのHttp
コール構築あなたのAngular 2
アプリケーション内部:
import { Injectable } from '@angular/core';
import { Http, Headers } from '@angular/http';
@Injectable()
export class EmailService {
constructor(private http: Http) { }
public VerifyEmail() {
return this.http.post(`http://localhost:3000/sendmail`, null, null).map(res => res.json());
}
}
NOTEあなたはnode EmailAPI.js
を実行した後に表示されるポート名に変更、コール内でhttp://localhost:3000
が表示されますが。
これにはうまく対応していると思われる追加情報があります。Postman - Testing your API'sを参照すると、発生する可能性のあるエラーをデバッグするのに役立ちます。
問題が何ですか?任意のエラー? – Smit
私はこのAPIをどのように使用して角2から電子メールを送りますか? – ryannguyen
@ryannguyen私の答えを見てください。 –