Php mail()vs Yahoo:有人可以简单解释YAHOO从php邮件功能接收邮件所需的步骤吗?(Php mail() vs Yahoo: Can someone Simply Explain

编程入门 行业动态 更新时间:2024-10-25 03:29:18
Php mail()vs Yahoo:有人可以简单解释YAHOO从php邮件功能接收邮件所需的步骤吗?(Php mail() vs Yahoo: Can someone Simply Explain Steps required for YAHOO to receive mail from php mail function?)

我已经看到了关于这个主题的数千个类似的问题。 并且肯定知道 SO 中的“标记为重复问题”的事情。

但是,仍然不清楚如何或者简单地说要从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以某种方式发送。

那么, 我们该怎么办? ......如果YAHOO自己的样品不起作用,那么:

a)PHP mail()函数是否被弃用?...如果是,那么替代方案是什么?

b)如果该功能仍然有效,我们如何提出YAHOO Inbox友好的 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";

仍然雅虎没有收邮件。

EDIT2

我去了这个链接: http : //www.forensicswiki.org/wiki/Evolution_Header_Format

YAHOO说标题应该是这样的:

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没有错误

I have seen thousands of similar questions asked on this topic. And for sure am aware of the "MARKED AS DUPLICATE QUESTION" thing in SO.

However, it is still not Clear how or what one has to do in simple terms to have yahoo Inbox emails from a PHP mail() function.

In the Yahoo site, they give a sample script to send mails like

Link 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

Using this basic approach found in the Yahoo's own legitimate website fails.

The second suggestion would be (for PERL) but can be converted to PHP with some editing:

#!/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>";

Link: http://help.yahoo.com/l/us/yahoo/smallbusiness/webhosting/php/php-17.html

After few edits to make it PHPish it looks like:

<?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!"; } ?>

The user_name2@gmail.com for GMAIL sends the Email as required but user_name@yahoo.com somehow does not go anywhere.

So, what should we do?... If YAHOO's own samples are not working, then:

a) Is PHP mail() function getting deprecated?... If so, what is the alternative?

b) Should the function still be valid, how do we come up with YAHOO Inbox friendly PHP Codes?

c) What is the best practice for PHP mail() Function?

EDIT:

Additional tests.

Just tested it in this format Suggest by PHP mail() function not sending email:

$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";

STILL YAHOO DOES NOT INBOX THE MAIL.

EDIT2

I went to this Link: http://www.forensicswiki.org/wiki/Evolution_Header_Format

YAHOO said the header should be like this:

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

Thested with PHP mail() func. ... GMail received, again, YAHOO Rejected... I Get NO Error in the 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**

希望它可以帮到某人!

I Finally got a laaaaarge smile on my face. Working together with @DaveRandom, He helped me come up with these codes:

NOTE: The code bellow uses 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!"; } ?>

And this WORKED like VOODOO!... It sent mails to any provider. Including **YAHOO**

Hope it helps someone!

更多推荐

本文发布于:2023-08-04 15:04:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1417813.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:所需   步骤   邮件   简单   功能

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!