使用自动生成的URL时,PHP邮件脚本会转到垃圾邮件

时间:2013-11-06 13:18:46

标签: php email

以下是我用来发送电子邮件的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);

2 个答案:

答案 0 :(得分:2)

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

为什么我们应该使用SMTP代替PHP mail():

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

在大多数情况下,使用sendmail发送带有mail()函数的

邮件。没有进行身份验证,如果您在额外标头中使用“发件人:”,它几乎总是被标记为垃圾邮件。

这是因为如果你看一下gmail中的原始电子邮件文件,你会看到发送的标题。您实际上是从user@serverhostname.tld发送的,而不是像您告诉邮件功能那样的someone@example.com。 如果您使用SMTP并查看原始邮件,则电子邮件实际上是从someone@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

答案 1 :(得分: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;

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