1

当用户在我的应用中注册时,我想发送一封欢迎电子邮件。当用户注册时,他会被重定向到他的个人资料页面。我尝试在创建用户时发送电子邮件,但 email() 需要 7 秒来发送电子邮件,并且页面一直等到那时,然后在 7 秒后将用户重定向到配置文件。

这是不希望的。我想在用户注册后立即重定向用户,并在此过程中发送一封电子邮件。需要7秒不知道为什么。我在 godaddy 和 hostgator 帐户以及我的本地主机上在线尝试过。

顺便说一句:我正在使用 PHPMailer 发送电子邮件。

我怎样才能创建一个独立进程,在调用时使用电子邮件 $_POST[] 参数 {to、subject、body} 调用我的 sendMail.php。

我虽然 ajax 调用可以解决问题,但是一旦我的页面从注册重定向到配置文件,电子邮件脚本就会停止。我试过这段代码:

<script language="JavaScript">
    $.post( "sendMail.php", { to: "$to", subject: "$subject", htmlBody: "$htmlBody", altBody: "$altBody" } );
location.href=profile.html
</script>

请帮忙,我搜索了很多,但他们在我不是的 shell 上工作,其他解决方案是基于 unix/linux 的。我想让它在 xampp 以及 godaddy linux 共享主机上工作,没有 ssh 访问。

4

3 回答 3

0

您可以尝试将 javascript 放在您的个人资料页面中,以便在他们点击个人资料页面而不是表单提交时运行。只需检查您的 sendMail.php 脚本中是否已经发送了欢迎电子邮件。

但是使用此脚本发送电子邮件可能不是一个好主意,因为它可能使恶意用户能够向他们想要的任何人发送他们想要的任何内容的电子邮件,如果它被标记为垃圾邮件,那么它将是你的服务器得到被封锁。这是“垃圾邮件发送者”使用的一种非常常见的技术。

在发送电子邮件之前,您必须非常小心处理电子邮件的方式,以免违反您与托管公司的协议。

于 2013-12-13T15:47:35.547 回答
0

php是单线程语言。这意味着您不能在前一个工作执行(并完成)之前开始工作......

您可以更改任务顺序。我的意思是你可以在欢迎页面完全呈现后发送电子邮件。

试试这个顺序;

1) 注册用户

2)显示欢迎页面,

3) 发送欢迎邮件....

使用此命令,您的新用户将不会等待 7 秒才能看到欢迎页面。

于 2013-12-13T16:03:07.613 回答
0

您可以使用Mail_Queue,这是一个专门用于发送电子邮件的作业队列,或者使用 Zend_Queue [ZF1 , ZF2]编写一些自定义的内容以使用 PHPMailer。您甚至可以考虑使用Gearman

于 2013-12-13T16:03:17.037 回答