在php中的后台进程发送电子邮件

时间:2013-12-13 15:40:01

标签: php email xampp shared-hosting worker-process

我想在用户在我的应用中注册时发送欢迎电子邮件。 当用户注册时,他被重定向到他的个人资料页面。 我尝试在创建用户时发送电子邮件,但是电子邮件()需要7秒钟才能发送电子邮件,页面会一直等待,然后在7秒后将用户重定向到个人资料。

这不是必需的。我想在注册后立即重定向用户,并在整个过程中发送电子邮件。需要7秒不知道为什么。我在godaddy和hostgator帐户以及我的localhost上在线尝试。

BTW:我正在使用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访问。

3 个答案:

答案 0 :(得分:0)

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

但是使用这个脚本发送电子邮件可能不是一个好主意,因为它可以使恶意用户发送一封电子邮件,其中包含他们想要的内容,无论他们想要什么,如果它被标记为垃圾邮件,那么它就是你的被阻止的服务器。这是“垃圾邮件发送者”使用的一种非常常见的技术。

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

答案 1 :(得分:0)

Php是单线程语言。这意味着您无法在执行(并完成)前任之前开始工作......

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

尝试此订单;

1)注册用户

2)显示欢迎页面,

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

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

答案 2 :(得分:0)

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