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

Posted

技术标签:

【中文标题】用户注册后如何发送验证/确认电子邮件【英文标题】:How to send Verification/Confirmation Email when user have registered 【发布时间】:2012-10-04 02:54:13 【问题描述】:

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

但问题是当我在浏览器中运行 .php 文件时,它显示无法发送确认邮件。

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

我可以从 LOCALHOST 发送确认邮件吗?怎么办??

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

【问题讨论】:

显示您正在使用的代码。如果您只是想使用 SMTP 服务器,那么您需要使用实际的 SMTP 服务器。如果您在本地计算机上运行一个,那么您可以使用它,尽管接收服务器可能不接受消息(潜在的垃圾邮件)。不过,您可以使用任何 SMTP 服务器。例如,Gmail。 到目前为止你做了什么?什么操作系统?什么服务器?说点什么吧? 【参考方案1】:

如果您在家中从开发人员服务器运行脚本,您的ISP having blocked port 25 很可能有问题。

我建议您使用事务性电子邮件服务,例如:

AlphaMail PostageApp 山魈

为什么?

具有 HTTP API 支持(在端口 80/443 上运行,因此没有 ISP 阻塞)。 IE。在家中轻松奔跑。 面向未来。您不必考虑托管您自己的 SMTP 基础设施。一旦您的发送量增加,就对其进行扩展。 您不必考虑交付问题。由于您发送的 IP 未列入白名单而被阻止,名单还在继续。 统计。让您跟踪总发送/点击/打开/退回。

怎么做?

既然我是 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>

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于用户注册后如何发送验证/确认电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用腾讯企业邮箱发送会员注册验证邮件

设计在更新时不确认电子邮件

将 Mandrill 帐户合并到 Mailchimp 后,如果我的发送域未设置为接收电子邮件,我该如何接受验证电子邮件?

Firebase 确认电子邮件未发送

Rails 中的电子邮件确认,无需使用任何现有的身份验证 gem/插件

仅在确认付款后,如何在 NodeMailer 中发送电子邮件?