无法通过 telnet 错误 504 连接到 smtp 服务器
cannot connect to an smtp server over telnet error 504
我在尝试通过 telnet 登录我的电子邮件服务器时收到 504 错误。我已经尝试了端口 25 和 587。(使用 *s 和 xs 屏蔽域和 ips)。
>EHLO domain.com
250-************.outlook.office365.com Hello [xx.xx.xx.xx]
250-SIZE 157286400
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250 CHUNKING
> HELP
214-This server supports the following commands:
214 HELO EHLO STARTTLS RCPT DATA RSET MAIL QUIT HELP AUTH BDAT
> AUTH
504 5.7.4 Unrecognized authentication type
[*************.********.****.outlook.com]
> auth
504 5.7.4 Unrecognized authentication type
[*************.********.****.outlook.com]
> AUTH LOGIN
504 5.7.4 Unrecognized authentication type
[*************.********.****.outlook.com]
> auth login
504 5.7.4 Unrecognized authentication type
[*************.********.****.outlook.com]
虽然我可以使用 phpmailer 来完成它!:
<?php
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->Host = $host;
$mail->Port = 587;
$mail->SMTPDebug = 2;
$mail->SMTPSecure = "tls";
$mail->SMTPAuth = true;
$mail->Username = $user;
$mail->Password = $password;
$mail->SetFrom($user, "chiliNUT");
$mail->Subject = $subject;
$mail->MsgHTML($content);
$mail->send();
在身份验证的幕后,它正在做:
public function Authenticate($username, $password) {
// Start authentication
fputs($this->smtp_conn,"AUTH LOGIN" . $this->CRLF);
//...
如何在命令行上运行它?
这是因为大多数明智的邮件服务器不允许未加密的 AUTH - 请注意,您从服务器收到的功能列表不包括 AUTH - 您需要先调用 STARTTLS,PHPMailer 会自动执行此操作。您无法使用 telnet 轻松地手动执行此操作 - 使用 openssl 的 s_client 命令可以做得更好。 PHPMailer 故障排除指南中有一个示例,例如:
openssl s_client -starttls smtp -connect smtp.outlook.office365.com:587
我在尝试通过 telnet 登录我的电子邮件服务器时收到 504 错误。我已经尝试了端口 25 和 587。(使用 *s 和 xs 屏蔽域和 ips)。
>EHLO domain.com
250-************.outlook.office365.com Hello [xx.xx.xx.xx]
250-SIZE 157286400
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250 CHUNKING
> HELP
214-This server supports the following commands:
214 HELO EHLO STARTTLS RCPT DATA RSET MAIL QUIT HELP AUTH BDAT
> AUTH
504 5.7.4 Unrecognized authentication type
[*************.********.****.outlook.com]
> auth
504 5.7.4 Unrecognized authentication type
[*************.********.****.outlook.com]
> AUTH LOGIN
504 5.7.4 Unrecognized authentication type
[*************.********.****.outlook.com]
> auth login
504 5.7.4 Unrecognized authentication type
[*************.********.****.outlook.com]
虽然我可以使用 phpmailer 来完成它!:
<?php
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->Host = $host;
$mail->Port = 587;
$mail->SMTPDebug = 2;
$mail->SMTPSecure = "tls";
$mail->SMTPAuth = true;
$mail->Username = $user;
$mail->Password = $password;
$mail->SetFrom($user, "chiliNUT");
$mail->Subject = $subject;
$mail->MsgHTML($content);
$mail->send();
在身份验证的幕后,它正在做:
public function Authenticate($username, $password) {
// Start authentication
fputs($this->smtp_conn,"AUTH LOGIN" . $this->CRLF);
//...
如何在命令行上运行它?
这是因为大多数明智的邮件服务器不允许未加密的 AUTH - 请注意,您从服务器收到的功能列表不包括 AUTH - 您需要先调用 STARTTLS,PHPMailer 会自动执行此操作。您无法使用 telnet 轻松地手动执行此操作 - 使用 openssl 的 s_client 命令可以做得更好。 PHPMailer 故障排除指南中有一个示例,例如:
openssl s_client -starttls smtp -connect smtp.outlook.office365.com:587