问题描述: 当使用Amazon SES和Sendy.co发送邮件时,只有Gmail中的邮件被归类为垃圾邮件,其他邮件则在收件箱中。
解决方法:
SPF记录: "v=spf1 include:amazonses.com ~all"
DKIM记录:请参考Amazon SES文档中的指南,生成并添加DKIM记录。
遵循最佳实践:确保您的邮件内容和发送行为符合Amazon SES和Gmail的最佳实践。这包括遵循CAN-SPAM法规、发送合法和有价值的邮件,避免使用垃圾邮件行为(如购买邮件列表、使用欺诈性内容等)。
邮件内容和样式:确保您的邮件内容和样式专业且有吸引力。避免使用过多的链接、垃圾邮件词语和大写字母。您可以使用在线工具(如SpamAssassin)来检查您的邮件是否有垃圾邮件的特征。
回复地址和域名:使用与您的邮件内容和发送者身份相关的合适回复地址和域名。确保这些地址和域名是有效的,可以接收和处理回复邮件。
发送频率和数量:避免在短时间内发送大量邮件,尤其是对于新的Amazon SES帐户。逐渐增加您的发送量和频率,以避免被Gmail视为垃圾邮件攻击。
监控和反馈回路:定期监控您的发送情况和反馈回路。Amazon SES提供了一些工具和API来帮助您监控邮件发送状态和处理退信。
代码示例: 以下是使用Amazon SES和Sendy.co发送邮件的一个简单示例:
require 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer(true);
try {
// 邮件设置
$mail->isSMTP();
$mail->Host = 'smtp.sendgrid.net';
$mail->SMTPAuth = true;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->Username = 'YOUR_SENDGRID_USERNAME';
$mail->Password = 'YOUR_SENDGRID_PASSWORD';
// 发件人和收件人
$mail->setFrom('from@example.com', 'Your Name');
$mail->addAddress('to@example.com', 'Recipient Name');
// 邮件内容
$mail->isHTML(true);
$mail->Subject = 'Test Email';
$mail->Body = 'This is a test email';
// 发送邮件
$mail->send();
echo 'Email sent successfully';
} catch (Exception $e) {
echo "Email could not be sent. Error: {$mail->ErrorInfo}";
}
请注意,上述代码示例使用了SendGrid作为SMTP主机。您需要将YOUR_SENDGRID_USERNAME和YOUR_SENDGRID_PASSWORD替换为您在SendGrid上的实际凭据。