用邮箱认证注册,只有30%被激活?

Posted

技术标签:

【中文标题】用邮箱认证注册,只有30%被激活?【英文标题】:Signup with email authentication, only 30% are activated? 【发布时间】:2010-12-23 22:06:02 【问题描述】:

我正在使用 phpmysql。而且我的网站在 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\";

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

标题有什么问题吗?

如何改进我的注册/注册激活流程?

【问题讨论】:

【参考方案1】:

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

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

另外,为了获得最佳效果,如果发送服务器有一个公共域名example.com,则返回路径应该是something@example.com。

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

【讨论】:

嗨 Ivan,这是我的发送脚本:mail($toUser,$subject,$body,$headers, "-f".$return_path) 我正在使用 php mail() 有什么区别吗?我应该在这里粘贴我所有的发送邮件代码吗?? hmm.. 根据 Dipen 的回答,如果我使用 phpmailer 或 swiftmailer 和 google smtp,它会解决问题吗? 我明白了。我找不到日志文件,我正在使用 plesk。 “您的返回路径主机是否与您发送邮件的服务器的 DNS 名称匹配?”你是说域名吗?我的 DNS 是 www.xxxabc.com,返回路径是bounce@xxxabc.com,我认为是一样的吗?对不起,我需要保护我的域名。我是新手。【参考方案2】:

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

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

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

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

【讨论】:

使用Gmail smtp合法吗??我听说过 phpmailer,现在我将它与 swiftmailer 进行比较。重新发送激活链接可能听起来不错,但如果它无法通过他们的邮箱,那么垃圾邮件点击它就没有用了,对吧?我的意思是,它只是不会通过(好吧,这就是我虽然),除非我错了:(【参考方案3】:

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

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

【讨论】:

@pygorex1:我没有日志文件。我在哪里可以得到它?基本上,在激活用户帐户之前,用户无能为力。 您需要向您的托管服务提供商询问有关访问日志文件的问题。 问过,但我认为需要等待 24 小时才能回复。我正在使用 plesk,知道文件的位置吗?【参考方案4】:

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

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

【讨论】:

以上是关于用邮箱认证注册,只有30%被激活?的主要内容,如果未能解决你的问题,请参考以下文章

邮箱怎么激活

Django用户注册邮箱验证实践

java实现注册邮箱激活验证

如何激活注册的豆瓣网,说出全部的注册到激活的步骤

ThinkPHP 3.2 用户注册邮箱验证激活帐号

pycharm学生激活