gpt4 book ai didi

java - 使用 Angular 7 + SpringBoot 发送电子邮件

转载 作者:行者123 更新时间:2023-12-02 05:54:25 25 4
gpt4 key购买 nike

我能够使用 SpringBoot 和硬编码数据发送电子邮件。

现在的问题是从我的 Angular 表单获取数据,并使用其中的数据调用 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.ts

import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { HttpClient } from '@angular/common/http';
import { Email } from 'src/app/models/email';
import { EmailService } from 'src/app/services/email.service';
import { NgForm } from '@angular/forms';


@Component({
selector: 'app-contacto',
templateUrl: './contacto.component.html',
styleUrls: ['./contacto.component.css']
})
export class ContactoComponent implements OnInit {

ngOnInit() {
}

mail :Email = new Email();

constructor(private http: HttpClient, private emailService :EmailService) { }

private enviarEmail() {
this.emailService.enviarEmail(this.mail)
.subscribe(data => console.log(data));
}

private onSubmit() {
this.enviarEmail();
}


}

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>

电子邮件.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);
}

}

最佳答案

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

该方法接收的对象“Email”缺少 @RequestBody 注释。现在工作顺利!

关于java - 使用 Angular 7 + SpringBoot 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56025983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com