我有一个问题... 使用APIPlatform和React,我想用Symfony mailer发送邮件,我使用了一个自定义操作。
以下是我所有的页面,以实现我的选择。
<?php
namespace App\Controller;
use App\Entity\Contact;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Mailer\MailerInterface;
class ContactMailController {
private $mail;
public function __construct(MailerInterface $mailer)
{
$this->mailer = $mailer;
}
public function __invoke(Contact $data){
$prenom=htmlspecialchars(strip_tags($data->getPrenom()));
$nom=htmlspecialchars(strip_tags($data->getNom()));
$message=htmlspecialchars(strip_tags($data->getMessage()));
$mail=htmlspecialchars(strip_tags($data->getMail()));
$email = (new TemplatedEmail())
->from('[email protected]')
->to('[email protected]')
->subject("contact")
->htmlTemplate('email/contact.html.twig')
->context([
'nom'=>$nom,
'prenom'=>$prenom,
'mail'=>$mail,
'message'=>$message
]);
$this->mailer->send($email);
dd($data);
}
}
我把它连接到一个实体
/**
* @ApiResource(
* itemOperations={},
* collectionOperations={"mail"={
* "method"="post",
* "path"="/contacts/mailer",
* "controller"="App\Controller\ContactMailController",
* "openapi_context"={
* "summary"="Envoyer un mail à [email protected]",
* "description"="Permet d'envoyer un e-mail à [email protected]"
* }
* }},
* denormalizationContext={"disable_type_enforcement"=true}
*)
*/
class Contact{
...
有了Postman,它就能完成,但有了React,它就能完成。
const contactSubmit = async (event)=>{
...
try{
axios.post("http://myapi.com/api/contacts/mailer",fields)
toast.info('votre message à bien été envoyé')
setFields({
"prenom": "",
"nom": "",
"mail": "",
"message": ""
})
}catch(error){
//
}
...
}
我有一个错误。Access to XMLHttpRequest at 'http://myapi.com/api/contacts/mailer' from origin 'http://mywebsite.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
但我在我的.env中有
###> nelmio/cors-bundle ###
CORS_ALLOW_ORIGIN=^.*$
###< nelmio/cors-bundle ###
最糟糕的是,它的发送,它的工作原理,但我不希望看到的错误显示... ...
谢谢你的帮助!我有一个问题...
我解决了我的问题!我的错误是在控制器,我还没有做出回应。
...
->context([
'nom'=>$nom,
'prenom'=>$prenom,
'mail'=>$mail,
'message'=>$message
]);
$this->mailer->send($email);
// my mistake
return new Response("sent");