70

My ISP帐户要求我发送出站SMTP邮件的用户名和密码。

执行时如何PHP使用它php.mail()?php.ini文件仅包含服务器的条目(SMTP= )From: (sendmail_from= ).

4

10 回答 10

42

PHPmail()命令不支持身份验证。您的选择:

  1. PHPMailer -教程
  2. -教程
  3. 自定义函数 - 请参阅注释部分中的各种解决方案:http: //php.net/manual/en/ref.mail.php
于 2008-09-21T22:02:10.883 回答
40

我在 php.ini 文件上应用了以下详细信息。它工作正常。

SMTP = smtp.example.com
smtp_port = 25
username = info@example.com
password = yourmailpassord
sendmail_from = info@example.com

这些详细信息与 Outlook 设置相同。

于 2012-03-13T18:29:36.123 回答
21

使用Fake sendmail for Windows发送邮件。

  1. 创建一个名为 的文件sendmailC:\wamp\
  2. 在文件夹中提取这 4 个文件sendmailsendmail.exelibeay32.dll和.ssleay32.dllsendmail.ini
  3. 然后配置C:\wamp\sendmail\sendmail.ini
smtp_server=smtp.gmail.com
smtp_port=465
auth_username=user@gmail.com
auth_password=your_password
  1. 以上将适用于 Gmail 帐户。然后配置php.ini:

    sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"

  2. 现在,重新启动 Apache,这基本上就是您需要做的所有事情。

于 2014-02-19T20:38:29.277 回答
15

PHP确实对邮件命令进行了身份验证!

以下在 WAMPSERVER 上为我工作(windows,php 5.2.17)

php.ini

[mail function]
; For Win32 only.
SMTP = mail.yourserver.com
smtp_port = 25
auth_username = smtp-username
auth_password = smtp-password
sendmail_from = you@yourserver.com
于 2011-08-04T12:27:46.183 回答
9
  1. 安装 Postfix(与 Sendmail 兼容)。
  2. 编辑/etc/postfix/main.cf阅读:
#Relay config
relayhost = smtp.server.net
smtp_use_tls=yes
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_sasl_security_options = noanonymous
  1. 创建/etc/postfix/sasl_passwd,输入:
smtp.server.net username:password
  1. 类型 #/usr/sbin/postmap sasl_passwd

  2. 然后运行:service postfix reload

现在 PHP 将像往常一样使用该sendmail -t -i命令运行邮件,Postfix 将拦截它并将其中继到您提供的 SMTP 服务器。

于 2015-06-27T01:16:25.683 回答
6

我更喜欢PHPMailer工具,因为它不需要 PEAR。但无论哪种方式,您都有一个误解:您不想要 SMTP 用户和密码的 PHP 服务器范围的设置。这应该是每个应用程序(或每个页面)的设置。如果你想在不同的 PHP 页面中使用相同的帐户,请将其添加到某种 settings.php 文件中。

于 2008-09-21T21:25:24.530 回答
5

经过一整天的努力,我终于找到了解决方案。这是我使用 WAMP 从 Windows XP 发送的方法。

  1. 使用 Google 的 SMTP 服务器。您可能需要一个帐户。
  2. 下载并安装Fake Sendmail。我刚刚下载了它,解压缩并将它放在 WAMP 文件夹中。
  3. 创建一个测试 PHP 文件。见下文。
<?php
    $message = "test message body";
    $result = mail('recipient@some-domain.com', 'message subject', $message);
    echo "result: $result";
?>
  1. 更新您的 php.ini 文件和 sendmail.ini 文件(sendmail.ini 位于 sendmail 文件夹中)。
  2. 如果它不起作用,请检查您刚刚创建的 sendmail 文件夹中的 error.log 文件。

参考:

于 2012-03-10T00:42:15.770 回答
2

这些答案已经过时和贬值。最佳实践..

composer require phpmailer/phpmailer

sendmail.php 文件中的下一个只需要以下内容

# use namespace
use PHPMailer\PHPMailer\PHPMailer;

# require php mailer
require_once "../vendor/autoload.php";

//PHPMailer Object
$mail = new PHPMailer;

//From email address and name
$mail->From = "from@yourdomain.com";
$mail->FromName = "Full Name";

//To address and name
$mail->addAddress("recepient1@example.com", "Recepient Name");
$mail->addAddress("recepient1@example.com"); //Recipient name is optional

//Address to which recipient will reply
$mail->addReplyTo("reply@yourdomain.com", "Reply");

//CC and BCC
$mail->addCC("cc@example.com");
$mail->addBCC("bcc@example.com");

//Send HTML or Plain Text email
$mail->isHTML(true);

$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";

if(!$mail->send()) 
{
    echo "Mailer Error: " . $mail->ErrorInfo;
} 
else 
{
    echo "Message has been sent successfully";
}

这可以配置你喜欢的任何方式..

于 2018-03-21T23:33:09.960 回答
1

使用 Mail PEAR 包中的 Mail::factory。例子。

于 2008-09-21T21:14:51.247 回答
1
  1. 安装最新的hMailServer。最后一步中的“运行 hMailServer Administrator”。
  2. 连接到“本地主机”。
  3. “添加域...”
  4. 设置“127.0.0.1”。作为“域”,单击“保存”。
  5. “设置”>“协议”>“SMTP”>“电子邮件发送”
  6. 将“localhost”设置为“本地主机名”,在“SMTP Relayer”部分提供您的数据,然后单击“Save”。
  7. “设置”>“高级”>“IP 范围”>“我的电脑”
  8. 禁用“要求 SMTP 身份验证”组中的“外部到外部电子邮件地址”复选框。
  9. 如果你修改了 php.ini,重写这 3 个值:

"SMTP = 本地主机",

"smtp_port = 25",

" ;发送邮件路径 = "。

信用:如何配置 WAMP(本地主机)使用 Gmail 发送电子邮件?

于 2016-01-15T20:04:21.820 回答