Я хотел бы иметь возможность отправить электронное письмо, введя URL-адрес, например
example.com/api/send-email?email=bob@example.org&name=Robert&template=job2231
затем электронное письмо отправляется на основе предварительно настроенного шаблона, который принимает параметры email
, name
.
Я бы вошел в example.com через их веб-интерфейс, поэтому в идеале аутентификация обрабатывается в фоновом режиме - по отношению к отправке электронной почты. Конечно, если вы не вошли в систему, электронная почта не отправляется.
Есть ли у вас какие-либо рекомендации для example.com или эквивалентного продукта? Можно разместить на хостинге или самостоятельно.
Решение для самостоятельного хостинга (дешевое и настраиваемое, но вы берете на себя риски и ответственность за его защиту):
Создайте один файл index.php и разместите его на сервере PHP.
<?php
if(isset($_POST['submit'])){
$to = $_POST['email'];
$from = "mailer@yourcompany.com";
$name = $_POST['name'];
$subject = "Sample Subject";
$message = $name . " " . " wrote the following:" . "\n\n" . $_POST['message'];
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
// If you want to have a success page, uncomment the next line
// header('Location: thank_you.php');
// to redirect to another page.
// you need to create another file named thank_you.php
}
?>
<!DOCTYPE html>
<head>
<title>Form submission</title>
</head>
<body>
<form action="" method="post">
Name: <input type="text" name="name"><br>
Email: <input type="text" name="email"><br>
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
РЕДАКТИРОВАТЬ: для аутентификации вы можете сделать что-то простое, используя HTTP-аутентификацию (это не супербезопасно или что-то в этом роде, но оно просто выполняет свою работу)
<?php
$AUTH_USER = 'admin';
$AUTH_PASS = 'admin';
header('Cache-Control: no-cache, must-revalidate, max-age=0');
$has_supplied_credentials = !(empty($_SERVER['PHP_AUTH_USER']) && empty($_SERVER['PHP_AUTH_PW']));
$is_not_authenticated = (
!$has_supplied_credentials ||
$_SERVER['PHP_AUTH_USER'] != $AUTH_USER ||
$_SERVER['PHP_AUTH_PW'] != $AUTH_PASS
);
if ($is_not_authenticated) {
header('HTTP/1.1 401 Authorization Required');
header('WWW-Authenticate: Basic realm="Access denied"');
exit;
} else {
// all that code from above goes here...
}
?>
Эндрю Раннер