我正在使用 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\";

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

标题有什么问题吗?

  • 我可以做什么来改进我的注册/注册激活流程?
有帮助吗?

解决方案

您应该将返回路径作为 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*)以确切地了解发生了什么。

其他提示

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

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

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

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top