我已经看到成千上万个关于这个话题的类似问题。并且肯定知道"标记为重复问题"的事情。
但是,仍然不清楚如何或必须简单地从PHP mail()函数获得雅虎收件箱电子邮件。
在雅虎网站中,他们提供了一个示例脚本来发送邮件,例如
链接 http://help.yahoo.com/l/us/yahoo/smallbusiness/webhosting/php/php-03.html
$email = "EMAIL TO";
$subject = "Test Message";
$msg = "This is a test message";
//$eLog="/tmp/mailError.log";
//Get the size of the error log
//ensure it exists, create it if it doesn't
//$fh= fopen($eLog, "a+");
//fclose($fh);
//$originalsize = filesize($eLog);
mail($email,$subject,$msg);
//NOTE: I commented out unneeded lines
使用雅虎自己的合法网站中的这种基本方法失败了。
第二个建议是(对于PERL),但可以通过一些编辑转换为PHP:
#!/usr/bin/perl
print "Content-type: text/html'n'n";
$title='mail test';
$to='MAIL ADDRESS TO SEND TO';
$from= 'EMAIL@YOURDOMAIN.COM';
$subject='Using Sendmail';
open(MAIL, "|/usr/sbin/sendmail -t");
## Mail Header
print MAIL "To: $to'n";
print MAIL "From: $from'n";
print MAIL "Subject: $subject'n'n";
## Mail Body
print MAIL "This is a test message from Yahoo 'n";
close(MAIL);
print "<html><head><title>$title<
/title></head>'n<body>'n'n";
## START HTML content
print "<h1>$title</h1>'n";
print "<p>A message has been sent from $from to $to";
## END HTML CONTENT
print "'n'n</body></html>";
链接: http://help.yahoo.com/l/us/yahoo/smallbusiness/webhosting/php/php-17.html
经过几次编辑以使其PHPish,它看起来像:
<?php
///#!/usr/bin/perl
$title='_01_mail test';
$to='user_name@yahoo.com, user_name2@gmail.com';
$from= 'info@companyname.com';
$subject='_01_Using Sendmail';
## Mail Header
$headers = "To: $to'n";
$headers .= "From: $from'n";
$headers .= "Subject: $subject'n'n";
## Mail Body
$message = "<html><head><title>$title<
/title></head><body>
<h1>$title</h1>
<p>A message has been sent from $from to $to'n'n
</p></body></html>";
if ( mail($to,$subject,$message,$headers) ) {
echo "The email has been sent!";
} else {
echo "The email has failed!";
}
?>
GMAIL的user_name2@gmail.com
根据需要发送电子邮件,但不知何故user_name@yahoo.com
无处可去。
那么,我们应该怎么做呢?...如果雅虎自己的样本不起作用,那么:
a) PHP mail() 函数是否被弃用?...如果是这样,还有什么选择?
b) 如果函数仍然有效,我们如何想出雅虎收件箱友好的 PHP 代码?
c) PHP mail() 函数的最佳实践是什么?
编辑:
其他测试。
刚刚以这种格式测试了它 通过 PHP mail() 函数建议不发送电子邮件:
$subject = "subject";
$message = "message";
$to = "USER_NAME_HERE@yahoo.com";
$type = "plain"; // or HTML
$charset = "utf-8";
$mail = "no-reply@".str_replace("www.", "", $_SERVER["SERVER_NAME"]);
$uniqid = md5(uniqid(time()));
$headers = "From: ".$mail."'n";
$headers .= "Reply-to: ".$mail."'n";
$headers .= "Return-Path: ".$mail."'n";
$headers .= "Message-ID: <".$uniqid."@".$_SERVER["SERVER_NAME"].">'n";
$headers .= "MIME-Version: 1.0"."'n";
$headers .= "Date: ".gmdate("D, d M Y H:i:s", time())."'n";
$headers .= "X-Priority: 3"."'n";
$headers .= "X-MSMail-Priority: Normal"."'n";
$headers .= "Content-Type: multipart/mixed;boundary='"----------".$uniqid."'""."'n'n";
$headers .= "------------".$uniqid."'n";
$headers .= "Content-type: text/".$type.";charset=".$charset.""."'n";
$headers .= "Content-transfer-encoding: 7bit";
雅虎仍然没有收件箱邮件。
编辑2
我去了这个链接:http://www.forensicswiki.org/wiki/Evolution_Header_Format
雅虎说标题应该是这样的:
Subject: header test
From: Username <username@sendinghost.com>
To: Username <username@receivinghost.com>
Content-Type: text/plain
Date: Sat, 28 Jul 2007 11:52:35 +0200
Message-Id: <1185616355.19231.0.camel@localhost>
Mime-Version: 1.0
X-Mailer: Evolution 2.10.1
Content-Transfer-Encoding: 7bit
用PHP mail() func.
... GMail
再次收到YAHOO
被拒绝...我在Logs
中没有错误
我终于在脸上露出了啧啧的笑容。他与@DaveRandom一起工作,帮助我想出了这些代码:
注意:下面的代码使用 PHPMailer
<?php
$senderName = 'Erick Best'; //Enter the sender name
$username = 'erickbestism@yahoo.com'; //Enter your Email
$password = 'passwordHere';// Enter the Password
$recipients = array(
'erickbestism@gmail.com' => 'Erick Best',
'erickbestism@yahoo.com' => 'Yahoo User',
);
///That's all you need to do
//No need to edit bellow
require '../PHPMailerAutoload.php';
//Create a new PHPMailer instance
$mail = new PHPMailer();
// Set up SMTP
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Host = "smtp.mail.yahoo.com";
$mail->Port = 587; // we changed this from 486
$mail->Username = $username;
$mail->Password = $password;
// Build the message
$mail->Subject = 'PHPMailer mail() test';
$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
$mail->AltBody = 'This is a plain-text message body';
$mail->addAttachment('images/phpmailer_mini.gif');
// Set the from/to
$mail->setFrom($username, $senderName);
foreach ($recipients as $address => $name) {
$mail->addAddress($address, $name);
}
//send the message, check for errors
if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
?>
这就像VOODOO一样工作...它向任何提供商发送邮件。包括**YAHOO**
希望它对某人有所帮助!
试试这个:
<?php
include("Mail.php");
$recipients = "mailto@example.com";
$headers["From"] = "mailfrom@example.com";
$headers["To"] = "mailto@example.com";
$headers["Subject"] = "Test message";
$body = "TEST MESSAGE!!!";
$params["host"] = "example.com";
$params["port"] = "25";
$params["auth"] = true;
$params["username"] = "user";
$params["password"] = "password";
// Create the mail object using the Mail::factory method
$mail_object =& Mail::factory("smtp", $params);
$mail_object->send($recipients, $headers, $body);
?>
其中用户名和密码是雅虎帐户的用户名和密码。