用PHP发送邮件
我正在尝试使用PHP用PHP发送邮件,php,email,postfix-mta,Php,Email,Postfix Mta,我正在尝试使用PHPmail()函数发送邮件。我已经安装了postfix,按照用户的建议修改了所有必需的文件 我还更改了我的php.ini文件,将sendmail\u路径设置为sendmail\u路径=“/usr/sbin/sendmail-t-I”,但仍然无法将邮件发送到我的hotmail帐户、yahoo或gmail。 编辑: 别再投票给我了;即使我也不知道我的问题。到目前为止,我所意识到的是,我的ISP正在阻止除80以外的所有端口。如果有人能帮我缓解这个问题,那将是我的荣幸。当你配置Post
mail()
函数发送邮件。我已经安装了postfix,按照用户的建议修改了所有必需的文件
我还更改了我的php.ini
文件,将sendmail\u路径设置为sendmail\u路径=“/usr/sbin/sendmail-t-I”
,但仍然无法将邮件发送到我的hotmail帐户、yahoo或gmail。
编辑:
别再投票给我了;即使我也不知道我的问题。到目前为止,我所意识到的是,我的ISP正在阻止除80以外的所有端口。如果有人能帮我缓解这个问题,那将是我的荣幸。当你配置Postfix时,你不需要sendmail
,它也是一个类似MTA的Postfix。
因此php不使用sendmail\u path=“/usr/sbin/sendmail-t-i”
您必须通过php连接到Postfix服务器(在localhost:25中侦听)才能发送邮件
下面是一个基于
请注意,这是一个梨形包装。请具体说明。当你试图向你的雅虎或GMail帐户发送邮件时,你是否收到错误消息?你有弹跳吗?你的邮件日志里有什么东西吗?杰夫会亲自出现在你家门口喊“不!”吗?我在虚拟盒子上使用的是Ubuntu-10.04;我使用PHP mail()调用的邮件函数似乎工作正常。但是,我的收件箱中没有收到任何电子邮件。在我看来,我的主机中的SMTP端口(即Windows 7中的SMTP端口)被某种方式阻止,这可能会阻止我的邮件传递到hotmail服务器。现在你认为我想的方向正确吗?你是在住宅网络连接上运行的吗?很可能是您的ISP阻止了除邮件服务器之外的所有内容的TCP/25。telnet gmail-smtp-in.l.google.com 25
(从cmd
提示符)是否连接并为您提供220 mx.google.com ESMTP…
banner?您需要通过ISP的邮件服务器将MTA配置为smarthost。我的ISP已阻止除端口80以外的所有内容,这很遗憾,但却是真的。没有到gmail smtp的telnet。。。给我的只是连接错误,没有更多。那么,在我的主机操作系统上有什么我必须更改的,或者我必须将Ubuntu上的Postfix重新配置为smarthost吗?我是新手,所以请耐心。你需要在Ubuntu上重新配置后缀。如果你需要这方面的帮助,可以在Ubuntu网站上询问。谢谢你的回答,伙计。我手头有一个新问题。我无法在windows 7上打开端口25。我在windows防火墙的入站规则中添加了例外,即使在端口25上telnet到localhost时,也会出现连接错误。你遇到这个问题了吗我使用了这个网站上的工具来查看我的端口25是否打开,它说只有端口80打开。顺便说一句,我使用了这个网站上关于打开端口25的逐字描述:。任何关于打开端口25的帮助都将不胜感激。@FewTem您已经在Ubuntu上配置了后缀。为什么要从Windows连接它?我以为Ubuntu和我的Windows主机使用相同的端口,这就是为什么;无论如何,谢谢你的提醒。我得到了这个错误:很抱歉,我是php新手,所以不能从中获得太多。严格标准:第27行的/opt/lampp/htdocs/1/mailtosend.php中不应静态调用非静态方法PEAR::isError(),无法对smtp进行身份验证server@Few将php.ini中的error\u reporting
设置设置为E\u ALL^E\u STRICT
<?php
require_once "Mail.php";
$from = "<from.gmail.com>";
$to = "<to.yahoo.com>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
$host = "localhost";
$port = "25";
$username = "<myaccount.gmail.com>";
$password = "password";
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'port' => $port,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
?>