1

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

怎么了 ?

4

2 回答 2

1

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

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

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

  1. 确保您有退订链接
  2. 确保Reply-To添加了标题并且此处使用的电子邮件是有效的电子邮件。
  3. To字段中添加名称。像First Last <email@example.com>
  4. 添加您要邮寄的公司的邮政地址,其中必须包含电话号码。

有一个表格可以将雅虎的电子邮件发件人 IP 列入白名单。现在我没有找到它。所以尝试上面的事情,它应该工作得很好。

于 2013-01-12T07:22:38.757 回答
0

在这种情况下,您不进行身份验证(用户名密码)并且不使用 tls。这不会被接受。

更好地使用这个:

使用 Gmail 帐户的 XAMPP Sendmail

或通过 smtp 发送电子邮件的框架,例如

Zend 邮件 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);
于 2013-01-12T07:18:32.337 回答