$from = "someonelse@example.com";
$headers = "From:" . $from;
echo mail ("borutflis1@gmail.com" ,"testmailfunction" , "Oj",$headers);
我在PHP中发送电子邮件时遇到问题。我收到一个错误:SMTP server response: 530 SMTP authentication is required
.
我的印象是,你可以发送电子邮件没有SMTP验证。我知道这封邮件可能会被过滤掉,但这并不重要了。
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = someonelse@example.com
这是php.ini
文件中的设置。我应该如何设置SMTP?是否有任何SMTP服务器不需要验证或必须自己设置服务器?
9条答案
按热度按时间wlwcrazw1#
有一些SMTP服务器不需要身份验证就可以工作,但是如果服务器需要身份验证,就没有办法绕过它。
PHP的内置邮件函数非常有限--指定SMTP服务器只能在Windows中使用。在 *nix中,
mail()
将使用操作系统的二进制文件。如果你想把电子邮件发送到网络上的任意SMTP服务器,可以考虑使用SwiftMailer这样的库,这样你就可以使用Google Mail的发送服务器。
qacovj5a2#
如果您在Linux上托管WordPress站点并具有服务器访问权限,则可以安装msmtp来避免一些麻烦,msmtp允许您从标准PHP mail()函数通过SMTP发送邮件。msmtp是postfix的更简单的替代方案,需要更多的配置。
步骤如下:
安装msmtp
创建新的配置文件:
...具有以下配置信息:
您需要替换由"〈"和"〉"(包括"〉")中的所有内容表示的配置数据。对于主机/用户名/密码,请使用您的普通凭据通过邮件提供商发送邮件。
告诉PHP使用它
添加以下单行:
完整文档可在此处找到:
https://marlam.de/msmtp/
yqyhoc1h3#
对于另一种方法,您可以使用如下文件:
然后像这样发送:
https://php.net/function.curl-setopt
ukdjmx9f4#
我知道这是一个老问题,但它仍然活跃,我看到的所有答案都显示基本身份验证,这是过时的。下面是一个例子,显示如何通过谷歌的Gmail服务器发送使用PHPMailer与XOAUTH2身份验证:
参考:PHPMailer examples folder
gpfsuwkq5#
我为PHP创建了一个简单的轻量级SMTP电子邮件发送器,如果有人需要它的话。
https://github.com/Nerdtrix/EZMAIL
它在生产和开发两种环境中进行了测试。
yruzcnhs6#
当您通过需要SMTP Auth的服务器发送电子邮件时,您确实需要指定它,并设置主机、用户名和密码(如果不是默认端口,可能还需要设置端口-25)。
例如,我通常使用PHPMailer与以下设置类似:
您可以在这里找到更多关于PHPMailer的信息:https://github.com/PHPMailer/PHPMailer
41zrol4v7#
或者对于更多细节,read on。
imzjd6km8#
对于Unix用户,mail()实际上是使用Sendmail命令来发送电子邮件。您可以更改环境,而不是修改应用程序。msmtp是一个SMTP客户端,具有Sendmail兼容的CLI语法,这意味着它可以用来代替Sendmail。它只需要对您的php.ini进行很小的更改。
然后,即使是最低级的mail()函数也可以与SMTP一起工作,如果你试图在不修改应用程序的情况下将现有的应用程序连接到sendgrid或mandrill这样的邮件服务,它会非常有用。
fv2wmkja9#
问题是PHP
mail()
函数的功能非常有限,从PHP发送邮件有几种方法。1.**
mail()
使用系统上的SMTP服务器。在Windows上至少可以使用两个服务器:hMailServer和xmail。我花了几个小时来配置和启动它们。在我看来,第一个更简单。目前,hMailServer正在Windows 7 x64上工作。1.
mail()
在远程或虚拟机上使用SMTP服务器。**当然,像Gmail这样的真实的邮件服务不允许没有任何凭据或密钥的直接连接。您可以设置虚拟机或使用位于您局域网中的虚拟机。大多数Linux发行版都有现成的邮件服务器。配置它并享受乐趣。我在Debian 7上使用默认的exim4来监听其局域网接口。1.**邮件库使用直接连接。**库更容易设置。我使用了SwiftMailer,它可以完美地从Gmail帐户发送邮件。我认为PHPMailer也很不错。
不管你有什么选择,我建议你使用一些抽象层。你可以在运行Windows的开发机器上使用PHP库,在运行Linux的生产机器上使用
mail()
函数。抽象层允许你根据应用程序运行的系统交换邮件驱动程序。创建抽象MyMailer
类或接口与抽象send()
方法。继承MyPhpMailer
和MySwiftMailer
两个类,用适当的方式实现send()
方法。