我有以下代码来设置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 邮件地址作为第一个参数时,它可以正常工作。
怎么了?
答案 0 :(得分:1)
要以经过身份验证的用户身份发送邮件,您应使用电子邮件身份验证方法,例如SPF,DKIM等。
此外,您需要确保您的域名应指向您的IP地址,IP地址必须指向同一个域。这称为Reverse DNS
阻止邮件进入垃圾邮件文件夹的其他良好做法是
Reply-To
标题,此处使用的电子邮件是有效的电子邮件。To
字段中添加名称。与First Last <email@example.com>
雅虎的白名单电子邮件发件人IP表格。现在我找不到它。所以试试上面的东西,它应该运作良好。
答案 1 :(得分:0)
在这种情况下,你不认证(用户名密码),也不要使用。这不会被接受。
更好地利用这个:
XAMPP Sendmail using Gmail account
或通过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);