0

这是我用来发送电子邮件的 PHP 代码。出于某种原因,如果我包含以下行,它将进入垃圾邮件:$message .= WEBSITE_URL . '/violation.php?email=' . urlencode($fm_email) . "&key=$activation";但如果我删除它,它将进入我的收件箱。

谁能帮我解决这个问题,在我的电子邮件中允许这个网址?

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From: My Name <noreply@myname.com>' . "\r\n";
$subject  = 'Subject is here';
$message  = "Here is the message";
$message .= WEBSITE_URL . '/violation.php?email=' . urlencode($fm_email) . "&key=$activation";

mail($fm_email, $subject, $message, $headers);
4

2 回答 2

2

不要使用 php 的 mail() 函数,它只会将您的邮件发送到垃圾邮件。而是使用 SMTP php 邮件功能。

为什么我们应该使用 SMTP 而不是 PHP mail():

SMTP登录到邮件服务器上的实际帐户,然后通过 SMTP 将邮件发送到另一个邮件服务器。如果邮件服务器配置正确,您的邮件将从邮件服务器上的实际帐户发送,并且不会被标记为垃圾邮件。

在大多数情况下,使用 mail() 函数发送的邮件是使用 sendmail 发送的没有进行身份验证,如果您在额外的标头中使用“发件人:”,它几乎总是会被标记为垃圾邮件。

这是因为如果您查看 gmail 中的原始电子邮件文件,您将看到已发送的标头。您实际上是从 user@serverhostname.tld 发送,而不是像您告诉邮件功能那样从某人@example.com 发送。如果您使用 SMTP 并查看原始邮件,则电子邮件实际上是从某人@example.com 发送的

您可以从以下位置下载 SMTP 类:

  1. https://code.google.com/a/apache-extras.org/p/phpmailer/source/browse/trunk/class.smtp.php?r=170
  2. http://www.phpclasses.org/package/14-PHP-Sends-e-mail-messages-via-SMTP-protocol.html
于 2013-11-06T13:22:17.733 回答
0

使用以下标头可以防止您的电子邮件进入垃圾邮件/垃圾邮件文件夹。

$headers     = 'From: ' . $website_name . ' <' . $own_emailaddress . '>' . PHP_EOL;
$headers    .= 'Reply-To: ' . $name_sender . ' <' . $email_sender . '>' . PHP_EOL;
$headers    .= 'Return-Path: Mail-Error <' . $error_emailaddress . '>' . PHP_EOL;
$headers    .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
$headers    .= 'X-Priority: Normal' . PHP_EOL;
$headers    .= 'MIME-Version: 1.0' . PHP_EOL;
$headers    .= 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL;

不要忘记在代码中定义变量。

于 2013-11-06T13:21:39.023 回答