如何在Linux上使用PHP从本地主机发送电子邮件

我知道要在Windows上从本地主机发送电子邮件,您需要在php.ini中更改SMTP服务器,但是这仅在Windows上有效:

[mail function] ; For Win32 only. ; http://php.net/smtp SMTP = localhost ; http://php.net/smtp-port smtp_port = 25 

那么我应该怎样才能从Linux操作系统发送电子邮件呢?

Solutions Collecting From Web of "如何在Linux上使用PHP从本地主机发送电子邮件"

我会建议安装ssmtp而不是像postfix那样安装一个完整的邮件服务器。 如果这只是一个本地测试环境,则可能不需要完整的MTA。 ssmtp非常容易设置 – 您只需提供远程服务器的smtp凭据。 这里有一个教程。

如果您正在运行Debian及其变体(* buntu等),则可以通过运行sudo tasksel install mail-server ,该sudo tasksel install mail-server应该使用基本电子邮件功能来设置。 你可以通过在命令行echo 'body' | sendmail recipient@example.net运行来测试 echo 'body' | sendmail recipient@example.net ,或者像其他人提到的那样,在PHP中mail($to, $subj, $msg)

设置sendmail或exim。 在您的软件包管理器中搜索任一选项并安装它们。 Senmail是常见的,建立它应该做的工作。 Linux上的邮件命令是MUA或邮件用户代理,邮件用户代理(MUA)是用于发送和接收电子邮件的应用程序,更多是客户端。 邮件传输代理使用客户端 – 服务器应用程序架构将电子邮件从一台计算机传输到另一台计算机。

你的php.ini文件中应该有一个存根,如下所示:

 ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). sendmail_path = /usr/sbin/sendmail -t -i 

检查指定的命令是否存在于您的文件系统上,并且已经(安装和)正确配置了MTA。

如果你还没有安装MTA,那么Linux系统有很多MTA ,我推荐sendmail(comples /难以配置,但性能好,灵活性好)或者postfix(更容易配置,安全性更好的框)。

学习如何使用“邮件”cli客户端或在服务器上运行不同的MUA,以便从PHP集成中分离配置MTA。

这在Linux Mint 17上用于从本地主机发送电子邮件:

 sudo apt-get install sendmail 

你需要安装一个MTA,比如sendmail(一些像Debian这样的发行版似乎更喜欢exim,或者postfix)。

使用PHP的SMTP实现是一个坏主意,因为它不会考虑RFC5321的重试要求。“4.5.4.1。发送策略:邮件不能被立即传送必须排队,并定期重发发件人。

这违反了RFC“必须”要求,通常会降低鲁棒性,并且在大多数情况下会干扰正确的互操作。 这就是为什么你需要使用本地MTA(在Linux或Windows下)。 理想情况下,您需要使用非SMTP机制将消息提交给MTA,这就是为什么PHP将执行“sendmail”来发送邮件的原因。 如果安装了MTA,它往往会默认执行此操作。

要从本地主机(WAMP,XAMP或LAMP)发送邮件,您可以使用PHPMailer软件包(下载zip文件链接: http : //phpmailer.apache-extras.org.codespot.com/files/PHPMailer_5.2.3.zip )。

首先,您必须编辑“php.ini”要查找此文件,请使用WAMP服务器中的以下代码显示phpinfo。 创建一个php文件并添加这个内容。

 <?php echo phpinfo(); ?> 

有搜索“加载配置文件”这将是您的php.ini的路径。

在这个文件中删除给予extension = php_openssl.dll的;(分号)。

下载PHPMailerX.XX包后

提取 – >将完整的文件夹复制到您的项目文件夹。

在测试文件夹中有一个名为testemail.php的文件。

根据需要更改参数。 (下面给出的例子)。

然后在浏览器中输入127.0.0.1/PHPMailer/test/testemail.php。

然后,如果发送电子邮件,它会显示成功的消息,否则会给出错误信息。 例:

 //add these codes if not written $mail->IsSMTP(); $mail->SMTPAuth = true; // enable SMTP authentication $mail->SMTPSecure = "ssl"; // sets the prefix to the servier $mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server $mail->Port = 465; //You have to change these parameters to your requirements. //…….code…. $mail->Username = “abc@gmail.com”; // GMAIL username $mail->Password = “abcdefgh”; // GMAIL password //……..code….. There are many other functions to attach file etc.. For that refer doc file. $mail->AddAddress(“destination@gmail.com”,”Nick name”); //…….code…..