Java 使用Angular 7+发送电子邮件;弹簧靴

Java 使用Angular 7+发送电子邮件;弹簧靴,java,angular,api,spring-boot,email,Java,Angular,Api,Spring Boot,Email,我能够发送带有SpringBoot和硬编码数据的电子邮件 现在的问题是从我的角度表单中获取数据,然后用那里的数据调用API,但是我得到了错误500 有人知道问题出在哪里吗 EmailService.java @Service public class EmailService { private JavaMailSender javaMailSender; @Autowired public EmailService(JavaMailSender javaMail

我能够发送带有SpringBoot和硬编码数据的电子邮件

现在的问题是从我的角度表单中获取数据,然后用那里的数据调用API,但是我得到了错误500

有人知道问题出在哪里吗

EmailService.java



@Service
public class EmailService {

    private JavaMailSender javaMailSender;

    @Autowired
    public EmailService(JavaMailSender javaMailSender){
        this.javaMailSender = javaMailSender;
    }

    public void sendEmail(Email email) throws MailException {
        SimpleMailMessage mail = new SimpleMailMessage();
        mail.setTo("marioluarca7@gmail.com");
        mail.setFrom(email.getEmail());
        mail.setSubject("Contacto: "+email.getNombre());
        mail.setText(email.getMensaje());

        javaMailSender.send(mail);
    }

}
CustomerController.java



@CrossOrigin(origins = "http://localhost:4200")
@RestController
@RequestMapping("/api")
public class CustomerController {



  @Autowired
  private EmailService emailService;

 //some other code

  @PostMapping(value = "/email")
  public ResponseEntity<Email> enviarEmail( Email email){
    try {
      emailService.sendEmail(email);
      return new ResponseEntity<>(email,  HttpStatus.OK);
    } catch( MailException e){
      return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
    }


  }

}
contacto.component.html

<form (ngSubmit)="onSubmit()" #contacto>
              <div class="form-group">
                <label for="nombre">Nombre</label>
                <input type="text" class="form-control" id="name" required [(ngModel)]="mail.nombre" name="nombre">
              </div>

              <div class="form-group">
                <label for="email">Email</label>
                <input type="text" class="form-control" id="email" required [(ngModel)]="mail.email" name="email">
              </div>

              <div class="form-group">
                <label for="mensaje">Mensaje</label>
                <input type="text" class="form-control" id="mensaje" required [(ngModel)]="mail.mensaje" name="mensaje">
              </div>

              <button type="submit" class="btn btn-success">Contactar</button>
            </form>

名义
电子邮件
门萨耶
接触器
email.service.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { Email } from '../models/email';

@Injectable({
  providedIn: 'root'
})
export class EmailService {

  constructor(private http :HttpClient) { }

  private baseUrl = 'http://localhost:8080/api/email';

  enviarEmail(email :Email): Observable<any> {
    return this.http.post(`${this.baseUrl}`, email);
  }

}

从'@angular/core'导入{Injectable};
从'@angular/common/http'导入{HttpClient};
从“rxjs”导入{Observable};
从“../models/Email”导入{Email};
@注射的({
providedIn:'根'
})
导出类电子邮件服务{
构造函数(私有http:HttpClient){}
专用baseUrlhttp://localhost:8080/api/email';
环境邮件(电子邮件:电子邮件):可观察{
返回this.http.post(`this.baseUrl}`,电子邮件);
}
}

问题出在CustomerController.java中的enviemail()方法上


方法接收的对象“电子邮件”缺少@RequestBody注释。现在工作得很好

我也有类似的问题。但如果控制器中有注释@RequestBody,则为。我对你的代码有不同意见,但我知道这是相同的想法

错误500表示后端有错误。您可以在java应用程序的堆栈跟踪中检查真正的错误是什么(异常、发生在哪一行等等)。能否提供有关堆栈跟踪的更多信息?尝试系统输出MailException错误以检查发生的情况。提交表单后,从控制台复制粘贴stacktrace。
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { Email } from '../models/email';

@Injectable({
  providedIn: 'root'
})
export class EmailService {

  constructor(private http :HttpClient) { }

  private baseUrl = 'http://localhost:8080/api/email';

  enviarEmail(email :Email): Observable<any> {
    return this.http.post(`${this.baseUrl}`, email);
  }

}