Amazon Simple Email Service - 需要发送邮件
Amazon Simple Email Service - Need to send email
我正在尝试使用 SES 和 PHP SDK v3 发送电子邮件。但事实证明这相当困难。据我所知:
require_once '/src/aws/aws-autoloader.php';
$ses = new Aws\Ses\SesClient([
'version' => 'latest',
'region' => 'us-east-1',
'credentials' => [
'key' => 'mykeyhere',
'secret' => 'mysecrethere',
],
]);
我试过从各种指南中复制代码,但 none 似乎有效。有人可以告诉我如何使用 php 发送电子邮件吗?
首先设置您的 SES:
$ses = Aws\Ses\SesClient::factory([
'key' => 'AWS_KEY',
'secret' => 'AWS_SECRET_KEY',
'region' => 'us-east-1'
]);
比发送电子邮件:
$ses->sendEmail([
'Source' => 'from@email.com',
'Destination' => [
'ToAddresses' => array('to@email.com')
],
'Message' => array(
'Subject' => [
'Data' => 'SES Testing',
'Charset' => 'UTF-8',
],
'Body' => [
'Html' => [
'Data' => '<b>My HTML Email</b>',
'Charset' => 'UTF-8',
],
],
),
]);
注意事项
- 您必须验证发件人电子邮件或发件人 url 才能使用 SES。
- 如果您不请求生产访问权限,那么您必须验证所有收件人 电子邮件。
- 您可以使用任何 PHP 库通过 SES 发送,不需要 AWS Api
我知道您问过如何在 SES 中使用 API,但我使用 PHPMailer 来完成此任务。结果将相同。
<?php
require (dirname(__FILE__) . '/phpmailer/PHPMailerAutoload.php');
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$name = $_POST['name'];
$email = $_POST['email'];
$msg = $_POST['message'];
// send email
$mail = new PHPMailer();
$mail->isSMTP();
$mail->isHTML(false);
$mail->Host = 'email-smtp.us-west-2.amazonaws.com'; // Or put your zone here
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Username = 'mykeyhere';
$mail->Password = 'mysecrethere';
$mail->setFrom('<email added in ses>', "$name");
$mail->addAddress('<destination email>');
$mail->Subject = "design2co.de";
$mail->Body = "Nome: $name \n" .
"Email: $email \n" .
"Mensagem: $msg \n";
if(!$mail->send()) {
echo json_encode(array("status" => 404));
} else {
echo json_encode(array("status" => 200));
exit;
}
}
?>
我正在尝试使用 SES 和 PHP SDK v3 发送电子邮件。但事实证明这相当困难。据我所知:
require_once '/src/aws/aws-autoloader.php';
$ses = new Aws\Ses\SesClient([
'version' => 'latest',
'region' => 'us-east-1',
'credentials' => [
'key' => 'mykeyhere',
'secret' => 'mysecrethere',
],
]);
我试过从各种指南中复制代码,但 none 似乎有效。有人可以告诉我如何使用 php 发送电子邮件吗?
首先设置您的 SES:
$ses = Aws\Ses\SesClient::factory([
'key' => 'AWS_KEY',
'secret' => 'AWS_SECRET_KEY',
'region' => 'us-east-1'
]);
比发送电子邮件:
$ses->sendEmail([
'Source' => 'from@email.com',
'Destination' => [
'ToAddresses' => array('to@email.com')
],
'Message' => array(
'Subject' => [
'Data' => 'SES Testing',
'Charset' => 'UTF-8',
],
'Body' => [
'Html' => [
'Data' => '<b>My HTML Email</b>',
'Charset' => 'UTF-8',
],
],
),
]);
注意事项
- 您必须验证发件人电子邮件或发件人 url 才能使用 SES。
- 如果您不请求生产访问权限,那么您必须验证所有收件人 电子邮件。
- 您可以使用任何 PHP 库通过 SES 发送,不需要 AWS Api
我知道您问过如何在 SES 中使用 API,但我使用 PHPMailer 来完成此任务。结果将相同。
<?php
require (dirname(__FILE__) . '/phpmailer/PHPMailerAutoload.php');
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$name = $_POST['name'];
$email = $_POST['email'];
$msg = $_POST['message'];
// send email
$mail = new PHPMailer();
$mail->isSMTP();
$mail->isHTML(false);
$mail->Host = 'email-smtp.us-west-2.amazonaws.com'; // Or put your zone here
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Username = 'mykeyhere';
$mail->Password = 'mysecrethere';
$mail->setFrom('<email added in ses>', "$name");
$mail->addAddress('<destination email>');
$mail->Subject = "design2co.de";
$mail->Body = "Nome: $name \n" .
"Email: $email \n" .
"Mensagem: $msg \n";
if(!$mail->send()) {
echo json_encode(array("status" => 404));
} else {
echo json_encode(array("status" => 200));
exit;
}
}
?>