Angular 6 http:如何使用angular 6通过mailgun API发送邮件

时间:2019-02-04 15:01:29

标签: angular api mailgun

我想从角度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);
        }
      );
  }

当我单击发送时,出现此错误: enter image description here

关于如何将此卷曲写入角形的任何想法吗?

2 个答案:

答案 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); }
    );
}

您也许可以不用使用enctypeContent-Type请求标头。

希望有帮助!

答案 1 :(得分:0)

根据您使用curl标志的-F示例,mailgun期望包含多部分Post数据。您的Angular尝试只是将数据作为JSON对象发送,这是不一样的。而是创建一个FormData对象,在其中添加数据,然后发布您的FormData对象。