doubi9999 2012-04-26 09:25
浏览 40

PHP - Pear Mail:身份验证失败,但telnet有效

I'm stuck on an authentication problem. I want to send mail through an external SMTP server (running Microsoft Exchange 2010) using PHP. When I send a mail within a telnet session, it works fine:

telnet mail.myweb.com 25
Trying 100.200.300.400...
Connected to mail.myweb.com.
Escape character is '^]'.
220 mail.myweb.com SMTP Service ready
AUTH LOGIN
334 VXNlcm5hbWU6
bXlzZWNyZXR1c2VybmFtZQ==
334 UGFzc3dvcmQ6
bXlzZWNyZXRwYXNz
235 Authentication successful
MAIL FROM:user1@myweb.com
250 <user1@myweb.com> ... Sender ok
RCPT TO:fakeuser@fakeweb.com
250 Requested mail action okay, completed.
DATA
354 Start mail input; end with <CR><LF>.<CR><LF>
SUBJECT:test email
 
"test data"
.
250 Requested mail action okay, completed.

But when I try the Pear Mail code, I get an authentication failure. This is the debug response:

DEBUG: Recv: 220 mail.myweb.com SMTP Service ready 
DEBUG: Send: EHLO localhost 
DEBUG: Recv: 500 Syntax error, command unrecognized 
DEBUG: Send: HELO localhost 
DEBUG: Recv: 250 Requested mail action okay, completed. 
DEBUG: Send: RSET 
DEBUG: Recv: 250 Requested mail action okay, completed.

authentication failure [SMTP: SMTP server does not support authentication (code: 250, response: Requested mail action okay, completed.)]
DEBUG: Send: QUIT 
DEBUG: Recv: 221 mail1.myweb.com closing transmission channel

And this is the PHP code:

<?php
require_once "Mail.php";

$from = "user1@myweb.com";
$to = "fakeuser@fakeweb.com";
$subject = "Hi!";
$body = "Hi,

How are you?";

$host = "mail.myweb.com";
$port = "25";
$username = "mysecretusername";
$password = "mysecretpass";

$headers = array ('From' => $from,
     'To' => $to,
     'Subject' => $subject);
$smtp = Mail::factory('smtp',
      array ('host' => $host,
          'port' => $port,
          'debug' => true,
          'auth' => true,
          'username' => $username,
          'password' => $password));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
    echo("<p>" . $mail->getMessage() . "</p>");
 } else {
echo("<p>Message successfully sent!</p>");
 }
?>

The PHP code works with others SMTP servers, so there is no problem with Pear Mail. Username/pass are ok. Do you have any ideas what's wrong?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 关于#python#的问题:求帮写python代码
    • ¥20 MATLAB画图图形出现上下震荡的线条
    • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
    • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
    • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
    • ¥15 perl MISA分析p3_in脚本出错
    • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
    • ¥15 ubuntu虚拟机打包apk错误
    • ¥199 rust编程架构设计的方案 有偿
    • ¥15 回答4f系统的像差计算