Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php的Mail()_Php - Fatal编程技术网

使用php的Mail()

使用php的Mail(),php,Php,我想写一个脚本发送电子邮件到我的客户端自动使用php 例如,如果他们输入电子邮件,我如何自动发送。然后单击提交 我想自动发送这封电子邮件 第二,我的主机上需要smtp服务器吗?我可以在任何免费的主机上使用这个吗 谢谢你们,我为我的语言感到抱歉 Nikky我可能不会直接使用这个函数:你需要关心的事情太多了 相反,我建议使用一些与邮件相关的库,它将为您处理很多事情 其中之一(现在似乎已经取得了一些成功——例如,它正在集成到Symfony框架中)是 当然,对于一封简单的邮件来说可能有点过分了。。。但花

我想写一个脚本发送电子邮件到我的客户端自动使用php

例如,如果他们输入电子邮件,我如何自动发送。然后单击提交

我想自动发送这封电子邮件

第二,我的主机上需要smtp服务器吗?我可以在任何免费的主机上使用这个吗

谢谢你们,我为我的语言感到抱歉


Nikky

我可能不会直接使用这个函数:你需要关心的事情太多了

相反,我建议使用一些与邮件相关的库,它将为您处理很多事情

其中之一(现在似乎已经取得了一些成功——例如,它正在集成到Symfony框架中)是

当然,对于一封简单的邮件来说可能有点过分了。。。但花点时间学习如何使用这样的图书馆总是值得的;-)

在大多数情况下,使用内置的mail()函数不是一个好主意。因此,是的,可以使用快捷邮件或:


-PhpMailer在许多意义上都是类似的实现。

PHP不实现SMTP协议(RFC 5321)或IMF(RFC 5322),或者类似于Python的MIME。相反,PHP拥有的只是一个围绕sendmail MTA的简单C包装器

然而,尽管有种种缺点,我们仍然可以创建mime消息(multipart/alternative、multipart/mixed等),发送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);
由于这些限制,大多数人最终使用第三方库,如:

  • PHPmailer()
  • 速递员
  • Zend_邮件
  • 使用这些库可以轻松地构造文本或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.';
    }
    
    /*使用PHPmailer发送电子邮件示例:*/
    要求(“class.phpmailer.php”);
    $mail=new PHPMailer();
    $mail->From=”from@example.com";
    $mail->FromName=“您的姓名”;
    $mail->AddAddress(“myfriend@example.net"); // 这是必须发送电子邮件的地址。
    $mail->Subject=“HTML邮件”;
    $mail->IsHTML(正确);//这告诉PhPMailer消息使用HTML。
    $mail->Body=“你好,我的朋友!\n\n此邮件使用HTML!”;
    $mail->AltBody=“你好,我的朋友!\n\n此邮件使用HTML,但您的电子邮件客户端不支持它!”;
    if(!$mail->Send())//现在我们发送电子邮件并检查它是否已发送。
    {
    回显“未发送消息”;
    回显“邮件错误:”。$mail->ErrorInfo;
    }
    其他的
    {
    回显“消息已发送”;
    }
    
    此外: 问:我的主机上需要smtp服务器吗?我可以在任何免费的主机上使用这个吗?
    答:现在任何共享主机都有SMTP服务器(sendmail/postfix)。

    小心点。一旦一些有进取心的垃圾邮件发送者发现你的网站上有一个邮件程序脚本,他们会毫不犹豫地试图劫持它以用于垃圾邮件(然后他们所有的垃圾邮件将来自你的服务器!)撰写和发送有效的电子邮件比乍一看要难。当然,也许这不是火箭科学。但在几乎所有情况下,它都属于“已经解决,没有必要在最初的五、六、七次尝试中失败”的范畴。而且Swiftmailer真的是一个漂亮的库。不仅很难正确格式化和编写电子邮件中的字符集,而且很难单独使用邮件功能来防止“邮件头注入”,所以我强烈推荐Swiftmailer作为最低限度(如果您想让它不那么冗长,对于普通情况,只需为简单情况创建一个自定义函数包装器即可。