无法使用PHP代码和SMTP服务器向yahoo(任何地址)发送邮件

时间:2013-01-12 07:10:01

标签: php email smtp gmail yahoo

我有以下代码来设置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 邮件地址作为第一个参数时,它可以正常工作。

怎么了?

2 个答案:

答案 0 :(得分:1)

要以经过身份验证的用户身份发送邮件,您应使用电子邮件身份验证方法,例如SPFDKIM等。

此外,您需要确保您的域名应指向您的IP地址,IP地址必须指向同一个域。这称为Reverse DNS

阻止邮件进入垃圾邮件文件夹的其他良好做法是

  1. 确保您有取消订阅链接
  2. 确保添加了Reply-To标题,此处使用的电子邮件是有效的电子邮件。
  3. To字段中添加名称。与First Last <email@example.com>
  4. 一样
  5. 添加您要邮寄的公司的邮政地址,其中必须包含电话号码。
  6. 雅虎的白名单电子邮件发件人IP表格。现在我找不到它。所以试试上面的东西,它应该运作良好。

答案 1 :(得分:0)

在这种情况下,你不认证(用户名密码),也不要使用。这不会被接受。

更好地利用这个:

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);