我想编写一个脚本,使用php
自动向我的客户端发送电子邮件如何自动发送,例如,如果他们输入了他们的电子邮件。然后单击“提交”
我想自动发送此电子邮件
第二,我在主机上需要smtp服务器吗?我可以在任何免费托管中使用这个吗?
谢谢你们,我很抱歉我的语言
Nikky
答案 0 :(得分:6)
我可能不会直接使用mail
功能:你需要关心的事情太多了......
相反,我建议使用一些与邮件相关的库,它将为您处理很多事情。
其中一个(现在似乎取得了一些成功 - 例如,它集成在Symfony框架中)是Swift Mailer。
当然,对于一个简单的邮件来说可能有点过分......但是花一些时间学习如何使用这样的库总是值得的; - )
答案 1 :(得分:6)
PHP不实现SMTP协议(RFC 5321)或IMF(RFC 5322),或者像Python这样的MIME。相反 - 所有PHP都是sendmail MTA的简单C包装器。
然而 - 尽管有它的缺点 - 人们仍然可以创建mime消息(多部分/替代,多部分/混合等)并发送html和文本消息,并使用默认的PHP的mail()函数附加文件。问题是 - 这不是直截了当的。您最终将使用“headers”mail()参数手工制作整个消息,同时将“message”参数设置为''。此外 - 通过PHP的mail()循环发送电子邮件将是一种性能浪费,因为mail()为每个新电子邮件打开了新的smtp连接。
/**sending email via PHP's Mail() example:**/
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
由于这些限制,大多数人最终使用第三方库,如:
使用这些库可以轻松构建文本或html消息。添加文件也很容易。
/*Sending email using PHPmailer example:*/
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = "from@example.com";
$mail->FromName = "Your Name";
$mail->AddAddress("myfriend@example.net"); // This is the adress to witch the email has to be send.
$mail->Subject = "An HTML Message";
$mail->IsHTML(true); // This tell's the PhPMailer that the messages uses HTML.
$mail->Body = "Hello, <b>my friend</b>! \n\n This message uses HTML !";
$mail->AltBody = "Hello, my friend! \n\n This message uses HTML, but your email client did not support it !";
if(!$mail->Send()) // Now we send the email and check if it was send or not.
{
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
else
{
echo 'Message has been sent.';
}
ALSO: 问:我的主机上需要smtp服务器吗?我可以在任何免费托管中吗? 答:现在任何共享主机都有SMTP服务器(sendmail / postfix)。
答案 2 :(得分:2)
在大多数情况下,使用内置mail()函数并不是一个好主意。所以是的,要么使用SwiftMailer,要么:
http://phpmailer.worxware.com/ - PhpMailer在许多方面都是类似的实现。