无法使用 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 porttest@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 服务器中发送电子邮件

无法与主机 smtp.gmail.com [#0] 建立连接 - LARAVEL / XAMPP / PHP7

SMTP 服务器问题,PHP 邮件

php使用SMTP发送电子邮件[重复]