3

我正在使用 php 和 mysql。而且我的网站在 Flash 中(完整的 Flash 网站)

我有一个让用户注册的网站。注册过程包括发送“激活邮件”,点击链接激活账户。

前两周还好。在大约 2000 个用户中,有 1800 个用户被激活。之后,激活用户急剧下降,降至 30% 左右。示例:1000 个用户注册,只有 300 个被激活。

起初,我发现问题是因为电子邮件无法到达 ymail、msn 和 gmail 用户。(我的大多数订阅者是 Ymail (yahoo)、hotmail/msn(live) 和 gmail (gmail))。我尝试使用 ymail 和 hotmail 注册,但我没有收到任何激活电子邮件。我联系了 yahoo 和 msn,最终我的电子邮件现在可以通过了。

但是,我的注册统计仍然显示,激活用户只有 30% 左右,这让我很困惑。我联系了我的托管公司,询问他们将我的 IP 列入白名单。他们做到了。

我需要您对以下问题的建议/帮助:

  • 如何检查问题出在哪里?电子邮件未送达?用户收到邮件但没有点击激活链接?

我正在使用 php 邮件功能。这是我的标题:

  $headers = 'MIME-Version: 1.0' . "\r\n";

  $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

  $headers .= 'From: Admin <\admin@domain.com>' . "\r\n";

  $headers .= 'Return-Receipt-To: Bounce <\bounce@domain.com>' . "\r\n";

  $headers .= 'Reply-To: Admin <\admin@domain.com>' . "\r\n";

  $return_path = "\bounce@domain.com\";

(我隐藏了我的域名,并在电子邮件中添加了反斜杠,因为如果没有,电子邮件不会显示在这里,很奇怪)

标题有什么问题吗?

  • 我可以做些什么来改进我的注册/注册激活过程?
4

4 回答 4

1

您应该将返回路径作为 mail() 函数的“-f”参数传递:

mail(
    $this->recipient,
    $subj,
    $this->body,
    $this->compose_headers(),
    '-f ' . Options::obj()->mail->return_path);

此外,为了获得最佳结果,如果发送服务器具有公共域名 example.com,则返回路径应为 something@example.com。

无论如何,您绝对应该检查日志 (/var/log/mail*) 以确切了解发生了什么。

于 2009-12-07T07:20:15.113 回答
1

尝试使用 gmail 作为您的 smtp 服务器,而不是像来自域的 sendmail 这样的邮件服务器。使用 gmail smtp 可以确保您的邮件是尽最大努力发送的。此外,Gmail 不会被视为垃圾邮件,除非电子邮件 ID 被标记为垃圾邮件(因此请尝试使用安全的电子邮件 ID)。要通过放置改善 singup->activation,最好的办法是确保电子邮件到达用户的收件箱。

对于安全网,您可以拥有一项功能,如果第一个由于某种原因失败,您可以允许用户重新发送激活链接。

如果您不习惯将 gmail 用作 smtp,您可以使用 google 应用程序注册您的域(但这可能需要更改业务需求),并且您可以拥有 admin@domain.com 类型的电子邮件,并且仍然使用高效的 gmail smtp 服务器。

有许多库,例如 phpMAiler,它允许使用外部 smtp 服务器。请注意,通过 gmail 服务器的所有数据都通过 SSL 或 TSL 传输。

于 2009-12-07T07:24:06.340 回答
0

您是否有权访问发送注册电子邮件的电子邮件服务器的日志文件?任何退回的电子邮件通常都会返回到发送服务器。通过监控日志文件,您可以检查并查看仍有多少电子邮件(如果有)被退回。

如果没有激活的电子邮件地址,用户对您的网站有哪些访问权限?是否禁用了任何功能?是否有任何激励措施来激活或使用真实的电子邮件地址?

于 2009-12-07T07:22:36.013 回答
0

您的示例未显示作为必填字段的 Date 标头。根据我的经验,一些邮件处理程序会拒绝没有邮件的电子邮件(有些只是在当前日期添加一封邮件。)如果您的实际代码没有邮件,请尝试添加一封邮件,看看是否有区别。

搜索 RFC2822 以获取有关所需内容的信息,

于 2009-12-07T07:48:13.357 回答