如何在用户注册时发送验证/确认电子邮件

时间:2012-10-13 13:21:55

标签: php email

我已经编写了有关向已注册的用户发送验证邮件的代码!

但问题是当我在浏览器中运行.php文件时,它说不能发送确认邮件。

有人告诉我你需要一个服务器(域)来发送确认邮件,它不能用LOCALHOST发送。

我可以从LOCALHOST发送确认邮件吗?任何方式??

如果没有,请告诉我在哪里可以获得免费域名(用于测试)我可以上传我的.php文件并发送确认邮件?

2 个答案:

答案 0 :(得分:1)

如果您是在家中使用开发人员服务器运行该脚本,则很可能是您的ISP having blocked port 25出现了问题。

我建议您使用的是交易电子邮件服务,例如:

为什么?

  • 具有HTTP API支持(在端口80/443上运行,因此没有ISP阻止)。即很容易在家里跑。
  • 面向未来的。您不必考虑托管自己的SMTP基础架构。一旦你的邮件增加,就缩小它。
  • 您不必考虑交货。由于您发送的IP未被列入白名单而被阻止,因此列表会继续显示。
  • 统计。让我们跟踪Total Sent / Clicks / Opens / Bounces。

如何?

由于我是AlphaMail背后的开发人员之一,我当然建议你使用它(但不仅因为我是其背后的开发人员之一,而且因为它很棒!:))。而且由于您使用的是PHP,因此很容易使用AlphaMail PHP客户端:

include_once("comfirm.alphamail.client/emailservice.class.php");

$email_service = AlphaMailEmailService::create()
    ->setServiceUrl("http://api.amail.io/v1")
    ->setApiToken("YOUR-ACCOUNT-API-TOKEN-HERE");

$person = new stdClass();
$person->userId = "1234";
$person->firstName = "John";
$person->lastName = "Doe";
$person->dateOfBirth = 1975;

$response = $email_service->queue(EmailMessagePayload::create()
    ->setProjectId(12345) // Your AlphaMail project (determines template, options, etc)
    ->setSender(new EmailContact("Sender Company Name", "from@example.com"))
    ->setReceiver(new EmailContact("Joe Doe", "to@example.org"))
    ->setBodyObject($person) // Any serializable object
);

AlphaMail的另一个好处是它将逻辑与设计分开。因此,您再也不必使用丑陋的非标准(电子邮件)HTML来破坏您的代码。一旦您需要更改内容,就无需深入了解代码,只需登录AlphaMail Dashboard并立即编辑模板即可。此外,模板使用简单的模板语言Comlang构建,因此它们具有高度的个性化。

<html>
    <body>
        <b>Name:</b> <# payload.firstName " " payload.lastName #><br>
        <b>Date of Birth:</b> <# payload.dateOfBirth #><br>

        <# if (payload.userId != null) { #>
            <a href="/sign-up">Sign Up Free!</a>
        <# } else { #>
            <a href="/login?id=<# payload.userId #>">Sign In</a>
        <# } #>
    </body>
</html>

答案 1 :(得分:0)

您可以使用sendmail,smtp或其他一些服务,例如Amazon SES。 Amazon Simple email service免费提供沙盒功能(但您需要信用卡才能使用其服务),并且可以轻松配置到您的localhost中。

相关问题