-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsend-mail.php
More file actions
90 lines (76 loc) · 2.92 KB
/
send-mail.php
File metadata and controls
90 lines (76 loc) · 2.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
require_once './vendor/autoload.php';
require_once './src/Bitmarshals/Mail/SimpleMailer.php';
$config = require_once './config/config.php';
use Zend\Http\PhpEnvironment\Request;
use Zend\Http\PhpEnvironment\Response;
use Bitmarshals\Mail\SimpleMailer;
$clientEmail;
$clientName;
$emailBody;
$recipientEmail = $config['simple_mailer']['recipient']['email'];
$emailSubject = '[Contact Us] - ' . $config['domain_name'];
$request = new Request();
$response = new Response();
function redirect(Response $response, $url = '/')
{
$response->getHeaders()->addHeaderLine('Location', $url);
$response->setStatusCode(302);
return $response->send();
}
$isXmlHttpRequest = $request->isXmlHttpRequest();
// ensure it's a post response and isXmlHttpRequest
if (!$request->isPost()) {
if (!$isXmlHttpRequest) {
return redirect($response, '/');
}
$response->setStatusCode(400);
$response->setContent(json_encode(['status' => $response->getStatusCode(),
'title' => $response->getReasonPhrase()]));
$response->getHeaders()->addHeaderLine('Content-Type: application/json');
return $response->send();
}
// capture information sent in
$clientEmail = $request->getPost('client_email');
$clientName = $request->getPost('client_name');
$emailBody = $request->getPost('email_body');
// check that the email is valid
$emailValidator = new Zend\Validator\EmailAddress();
if (!$emailValidator->isValid(trim($request->getPost('client_email')))) {
$response->setStatusCode(422);
$response->setContent(json_encode(["detail" => "Failed Validation",
"status" => $response->getStatusCode(),
"title" => $response->getReasonPhrase(),
"validation_messages" => $emailValidator->getMessages()]));
if (!$isXmlHttpRequest) {
return redirect($response, '/');
}
$response->getHeaders()->addHeaderLine('Content-Type: application/json');
return $response->send();
}
try {
$simpleMailer = new SimpleMailer($config);
$emailMessage = $simpleMailer->generateEmailMessage($recipientEmail,
$emailSubject,
$clientName . ';' . PHP_EOL . $clientEmail . '; '
. PHP_EOL . PHP_EOL . $emailBody);
// send email
$simpleMailer->send($emailMessage);
$response->setStatusCode(200);
$response->setContent(json_encode(array("success" => "Your email has been sent")));
if (!$isXmlHttpRequest) {
return redirect($response, '/');
}
$response->getHeaders()->addHeaderLine('Content-Type: application/json');
return $response->send();
} catch (\Exception $ex) {
$response->setStatusCode(500);
$response->setContent(json_encode(["detail" => $ex->getMessage(),
"status" => $response->getStatusCode(),
"title" => $response->getReasonPhrase()]));
if (!$isXmlHttpRequest) {
return redirect($response);
}
$response->getHeaders()->addHeaderLine('Content-Type: application/json');
return $response->send();
}