angular — PHP mailer + angular4 — 404 не может найти проблему

я пытаюсь сделать PHP-форму для отправки электронной почты с использованием сервисов Angular, данные извлекаются, но сервер возвращает 404, так как я новичок в PHP, я не могу найти то, что мне не хватает. Кто-нибудь может мне помочь?

Я искал Angular4 + phpmailer и следовал некоторым учебникам, на самом деле я не думаю, что это сам phpcode.

Сервисы:

    import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { Resolve } from '@angular/router';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

export interface IMessage {
nome?: string,
email?: string,
assunto?:string,
mensagem?: string
}

@Injectable()
export class AppService {
private emailUrl = '../../../api/sendemail.php';

constructor(private http: Http) {

}

sendEmail(message: IMessage): Observable<IMessage> | any {
return this.http.post(this.emailUrl, message)
.map(response => {
console.log('Email enviado com sucesso', response);
return response;
})
.catch(error => {
console.log('Houve uma falha na solicitação de serviço', error);
return Observable.throw(error)
})
}
}

Contact.component.ts

    import { Component, OnInit } from '@angular/core';
import { AppService, IMessage } from '../app.service';

@Component({
selector: 'app-contact',
templateUrl: './contact.component.html',
styleUrls: ['./contact.component.scss'],
providers: [AppService]
})
export class ContactComponent implements OnInit {

message: IMessage = {};

constructor(private appService: AppService) { }


sendEmail(message:IMessage){
this.appService.sendEmail(message).subscribe(res => {
}, error => {
console.log('ContactComponent Error', error);
});
}

ngOnInit() {

function Toggle(){
var faq = document.querySelectorAll('.faq-box');
for(var i = 0 ; i < faq.length ; i++ ){
faq[i].addEventListener('click',function(){
this.classList.toggle('active');
})
}
}

Toggle();
}

}

PHP

            <?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'includes/phpmailer/src/Exception.php';
require 'includes/phpmailer/src/PHPMailer.php';
require 'includes/phpmailer/src/SMTP.php';


if( !isset( $_POST['nome'] ) || !isset( $_POST['email'] ) || !isset( $_POST['mensagem'] ) || !isset( $_POST['assunto'] ) ) {

}

$pnome = $_POST['nome'];
$pemail = $_POST['email'];
$passunto = $_POST['assunto'];
$pmsg = $_POST['mensagem'];

$to = "[email protected]";
$bcc = "";
$subject = 'Formulário de Contato Corpo Leve - ' . $pnome;
$body = $pmsg;

$body = "Nome: $pnome
<br>assunto: $passunto
<br>
<br>Mensagem:
<p>
$pmsg
</p>
";

//PHPMailer Object
$mail = new PHPMailer;

//From email address and name
$mail->From = $pemail;
$mail->FromName = $pnome;

//To address and name
$mail->addAddress($to);
//$mail->addAddress("[email protected]"); //Recipient name is optional

//Address to which recipient will reply
$mail->addReplyTo($pemail);

//CC and BCC
// $mail->addCC("[email protected]");
$mail->addBCC($bcc);

//Send HTML or Plain Text email
$mail->isHTML(true);

$mail->Subject = $subject;
$mail->Body = $body;
$mail->AltBody = $body;

$retorno;

if(!$mail->send())
{
$retorno = "Problema";
echo ":" . $mail->ErrorInfo;
}
else
{
$retorno = "E-mail enviado com sucesso. Você será redirecionado em 3 segundos";
header( "refresh:3;url=index.php" );
}
/*
$to = "[email protected]";
$subject = 'Formulário de Contato B&F Assessoria - ' . $pnome;
$body = $pmsg;

$body = `
Nome: $pnome
<br>assunto: $passunto
<br>
<br>Mensagem:
<p>
$pmsg
</p>
`;
$headers = 'From: ' . $pnome ."\r\n";
$headers .= 'Reply-To: ' . $pemail ."\r\n";
$headers .= 'Return-Path: ' . $pemail ."\r\n";
$headers .= 'X-Mailer: PHP5'."\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";

$retorno;

try {
if( mail($to, $subject, $body, $headers) ) {
header( "refresh:5;url=wherever.php" );
$retorno =  "E-mail Enviado com sucesso. Em 3 segundos você será redirecionado, obrigado por entrar em contato!";
}

} catch( Exception $e ) {
print_r( "Problema:" . e );
}*/
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Corpo Leve - E-mail enviado</title>
<body>
<?php
echo $retorno;
?>
</body>
</html>

0

Решение

Вы должны запустить веб-сервер для запуска сценария PHP. WAMP XAMP или любой веб-сервер.

private emailUrl = '../../../api/sendemail.php';

Здесь проблема с URL. EmailURL находит скрипт PHP в угловом положении, поэтому он дает вам 404.

Вам необходимо развернуть файл PHP на веб-сервере, а затем вы можете получить к нему доступ по URL.

Пример: Http: //localhost/phpmailer/api/sendemail.php

Надеюсь, это поможет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]