我想从角度6前端向用户发送邮件。我想使用mailgun api来做到这一点。这是一个可以正常工作的curl例子,我想将其“翻译”成角度为6的http:
curl -s --user
'api:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
https://api.mailgun.net/v3/sandbox5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.mailgun.og/messages
-F from='Mailgun Sandbox <postmaster@sandbox5xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.mailgun.org>'
-F to='Big boss <xxxxxxxxxxxxxx@gmail.com>'
-F subject='Hello mdx'
-F text='This is cool !'
我已经尝试过了:
sendMail(form) {
this.http
.post(
'https://api.mailgun.net/v3/sandboxxxxxxxxxxxxxxxxxxxxxxxx.mailgun.og/messages',
{
'from': 'Mailgun Sandbox <postmaster@sandbox5xxxxxxxxxxxxxxxxxxxxxxxxx9.mailgun.org>',
'to': 'xxxxxxxxxxxxx@gmail.com',
'subject': 'Hello',
'text': 'This is cool !'
}
)
.subscribe(
res => {
console.log('res : ', res);
},
err => {
console.log('err : ', err);
}
);
}
关于如何将此卷曲写入角形的任何想法吗?
答案 0 :(得分:2)
使用FormData
创建multipart/form-data
,并使用 Basic Authorization
标头进行用户名/密码--user
身份验证,尝试以下操作:
import { HttpHeaders } from '@angular/common/http';
// ...
const headers = new HttpHeaders({
'enctype': 'multipart/form-data',
'Authorization': `Basic ${btoa('api:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')}`
});
const formData = new FormData();
formData.append('from', 'Mailgun Sandbox <postmaster@sandbox5xxxxxxxxxxxxxxxxxxxxxxxxx9.mailgun.org>')
formData.append('to', 'xxxxxxxxxxxxx@gmail.com');
formData.append('subject', 'Hello');
formData.append('text', 'This is cool !');
sendMail(form) {
this.http
.post(
'https://api.mailgun.net/v3/sandboxxxxxxxxxxxxxxxxxxxxxxxx.mailgun.og/messages',
formData,
{ headers }
).subscribe(
res => { console.log('res : ', res); },
err => { console.log('err : ', err); }
);
}
您也许可以不用使用enctype
或Content-Type
请求标头。
希望有帮助!
答案 1 :(得分:0)
根据您使用curl
标志的-F
示例,mailgun期望包含多部分Post数据。您的Angular尝试只是将数据作为JSON对象发送,这是不一样的。而是创建一个FormData对象,在其中添加数据,然后发布您的FormData对象。