使用 Amazon AWS SES 发送电子邮件

Sending emails using Amazon AWS SES

我配置了aws的ses服务,但是一直无法使用。我的电子邮件正在发送,但它们是通过我的托管服务器 (Godaddy) 发送的,我只想通过 AWS 的 SES 发送它们。如果我犯了一个菜鸟错误,请原谅我。

这是我的代码的样子

<?php
require 'PHPMailerAutoload.php';
require 'class.phpmailer.php';
$mail = new PHPMailer;
$mail->SMTPDebug = 2;
$mail->Host = 'email-smtp.eu-west-1.amazonaws.com';
$mail->Port = 25;
$mail->ssl = true;
$mail->authentication = true;
$mail->Username = 'username';
$mail->Password = 'password';
$mail->setFrom('vaibhav@zigsaw.in', 'Test Email');
$mail->Body = 'Test Email from Zigsaw';
$mail->AddReplyTo('zigsawconsultancy@gmail.com', 'Candidate');
$mail->addAddress('zigsawconsultancy@gmail.com', 'Recruiter');
$mail->Subject = 'Test Email from Zigsaw';
if(!$mail->send()) 
{
echo "Email not sent. " , $mail->ErrorInfo , PHP_EOL;
} 
else 
{
echo "Email sent!" , PHP_EOL;
}
?>

免责声明:我的文件托管在 Godaddy 服务器上,我正在尝试通过 AWS SES 发送电子邮件。

GoDaddy 阻止出站 SMTP,但您没有告诉 PHPMailer 使用 SMTP(因此您的大部分设置什么都不做),因此它使用本地邮件服务器通过 mail() 函数提交,在 GoDaddy 的情况下是他们的服务器 - 所以这就是为什么它会那样做。不幸的是,GoDaddy 上没有使用外部 SMTP 的方法,尽管您可以通过他们的 secureserver.net 中继发送 - 但这当然意味着您不能使用您的个人域发送,因为它是伪造的,您的邮件将是垃圾邮件-过滤或退回。

如果您致电:

$mail->isSMTP();

PHPMailer 将使用 SMTP 和您的其他设置,尽管正如我在评论中所说,您刚刚发明了一堆行不通的东西,因此请根据提供的示例重写您的代码,尽管这不会无法在 GoDaddy 上工作。

如果 SES 有 HTTP API,那么您也许可以使用它,因为它不会受到 GoDaddy 的阻止。