无法使用 PHP 代码和 SMTP 服务器向 yahoo(任何地址)发送邮件
Posted
技术标签:
【中文标题】无法使用 PHP 代码和 SMTP 服务器向 yahoo(任何地址)发送邮件【英文标题】:Cannot send mail to yahoo (any address) using PHP code and SMTP server 【发布时间】:2012-12-26 19:15:34 【问题描述】:我有以下设置 SMTP 服务器的代码:
ini_set("send_from", "test@gmail.com");
ini_set("SMTP", "smtp.gmail.com");
我以这种方式创建了一个简单的邮件:
mail("test@yahoo.com", "A subject", "My message for you", "From: TEST");
当我运行此代码时,它无法向 Yahoo 发送邮件,例如some.email@yahoo.com。但是当我使用任何 Gmail 邮件地址作为第一个参数时,它可以工作。
怎么了?
【问题讨论】:
您是否也设置了smtp port
? test@gmail.com
的用户名和密码?
您需要 SSL 连接吗?
问题出在 yahoo 而不是 gmail
如果我从 gmail 发送到 gmail 就可以了!!!
【参考方案1】:
要以经过身份验证的用户身份发送邮件,您应该使用电子邮件身份验证方法,例如SPF、DKIM 等。
您还需要确保您的域应该指向您的 IP 地址,并且 IP 地址必须指向同一个域。这叫Reverse DNS
防止邮件进入垃圾邮件文件夹的其他良好做法是
-
确保您有退订链接
确保添加了
Reply-To
标头,并且此处使用的电子邮件是有效的电子邮件。
在To
字段中添加名称。喜欢First Last <email@example.com>
添加您要邮寄的公司的邮政地址,其中必须包含电话号码。
有一个表格可以将雅虎的电子邮件发件人 IP 列入白名单。现在我没有找到它。所以试试上面的东西,应该可以的。
【讨论】:
邮件永远不会到达雅虎,看起来雅虎会自动拒绝邮件...我不知道为什么! 您可以通过登录您的 gmail 帐户手动发送邮件吗?如果未交付,则肯定是雅虎问题,您需要报告。 你的IP也可能被列入黑名单! 我的 ip 没有被列入黑名单...我从我的 gmail 手动发送到 yahoo 并且工作正常 如果手动发送有效。然后尝试设置那些电子邮件身份验证方法。【参考方案2】:在这种情况下,您不进行身份验证(用户名密码)并且不使用 tls。这不会被接受。
最好用这个:
XAMPP Sendmail using Gmail account
或通过 smtp 发送电子邮件的框架
Zend Mail Gmail SMTP
http://framework.zend.com/manual/1.12/en/zend.mail.sending.html
这里是一个代码示例
http://framework.zend.com/downloads/latest#ZF1
require('Zend/Mail.php');
$config = array(
'ssl' => 'tls',
'port' => 587,
'auth' => 'login',
'username' => 'your_gmail_address@gmail.com',
'password' => 'password'
);
$smtpConnection = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
Zend_Mail::setDefaultTransport($smtpConnection);
Zend_Mail::setDefaultFrom('your_gmail_address@gmail.com', 'Your real name');
$mail = new Zend_Mail();
$mail->addTo('any_address@yahoo.com', 'Test');
$mail->setSubject(
'Demonstration - Sending Mails per SMTP Connection'
);
$mail->setBodyText('...Your message here...');
$mail->send($smtpConnection);
【讨论】:
如何在服务器上设置?我无法访问这些详细信息,无法访问 php.ini 使用第二个例子!它是什么样的服务器? Linux 还是 Windows? 那么这没有意义 "ini_set("SMTP", "smtp.gmail.com");"如果正常邮件无法正常工作,则您的提供商邮件服务器配置错误,您必须使用 zend 框架之类的东西通过 smtp 发送邮件。 这就是问题所在,我没有错误,一切正常,但邮件没有到达雅虎服务器 但在 gmail 中,您的邮件是否在外箱内?当您通过 gmail webmail 发送邮件时会发生什么?以上是关于无法使用 PHP 代码和 SMTP 服务器向 yahoo(任何地址)发送邮件的主要内容,如果未能解决你的问题,请参考以下文章
无法在“localhost”端口 587 连接到邮件服务器,验证 php.ini 中的“SMTP”和“smtp_port”设置或在 wamp 服务器中使用 ini_set()
无法使用 PHP SMTP 发送电子邮件。您的服务器可能未配置为使用此方法发送邮件
php smtp 无法在 ubuntu 服务器中发送电子邮件