Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用hotmail地址成功发送电子邮件,但使用gmail发送:SMTP错误:无法连接到SMTP主机_Php_Email_Phpmailer - Fatal编程技术网

Php 使用hotmail地址成功发送电子邮件,但使用gmail发送:SMTP错误:无法连接到SMTP主机

Php 使用hotmail地址成功发送电子邮件,但使用gmail发送:SMTP错误:无法连接到SMTP主机,php,email,phpmailer,Php,Email,Phpmailer,我用phpmail类发送电子邮件,现在我只是在localhost中测试,直到今天它还可以正常工作 我使用gmail地址进行测试,我的发送电子邮件配置如下: define('MAILUSER','myemail_test@gmail.com'); define('MAILPASS','mytestpass'); define('MAILPORT','587'); define('MAILHOST','smtp.gmail.com'); 而且,通过上面的配置,直到今天我都在成功地发送邮件。 但现在

我用phpmail类发送电子邮件,现在我只是在localhost中测试,直到今天它还可以正常工作

我使用gmail地址进行测试,我的发送电子邮件配置如下:

define('MAILUSER','myemail_test@gmail.com');
define('MAILPASS','mytestpass');
define('MAILPORT','587');
define('MAILHOST','smtp.gmail.com');
而且,通过上面的配置,直到今天我都在成功地发送邮件。 但现在它不工作了,我总是收到这样的错误:
SMTP错误:无法连接到SMTP主机。

因此,我尝试使用hotmail电子邮件查看它是否有效,我真的不明白为什么,但使用hotmail,我成功地发送电子邮件,如下所示:

define('MAILUSER','myemail_test@hotmail.com');
define('MAILPASS','mytestpass');
define('MAILPORT','25');
define('MAILHOST','smtp.live.com');
你知道为什么会这样吗

我的职能:

function sendMail($subject,$message,$from,$nameFrom,$to,$nameTo, $attachment = NULL, $reply = NULL, $replyNome = NULL){
    require_once('mail/class.phpmailer.php');
    $mail = new PHPMailer(); 
    $mail->IsSMTP(); 
    $mail->SMTPAuth = true; 
    $mail->IsHTML(true);
    $mail->SMTPSecure = "tls"; 
    $mail->Host = MAILHOST; 
    $mail->Port = MAILPORT; 
    $mail->Username = MAILUSER; 
    $mail->Password = MAILPASS; 
    $mail->From = utf8_decode($from);
    $mail->FromName = utf8_decode($fromName); 
    if($reply != NULL){
        $mail->AddReplyTo(utf8_decode($reply),utf8_decode($replyNome)); 
    }
    $mail->Subject = utf8_decode($subject); 
    $mail->Body = utf8_decode($message); 
    $mail->AddAddress(utf8_decode($to),utf8_decode($nameTo)); 
    if($attachment != NULL){
        $mail->AddAttachment($attachment);
    }
    if($mail->Send()){
        return true;
    }
    else{
        return false;
    }
}   

它不仅仅是一个不同的端口-您还需要启用TLS。请参见php.ini中的

,确保已使用

(窗口)
extension=php\u openssl.dll

(Linux)
extension=php\u openssl.so

此外,对于gmail,请使用以下主机:

$mail->Host = 'ssl://smtp.gmail.com:465';

谢谢你的回答。但我已经有TLS了。比如:$mail->SMTPSecure=“tls”;这不是你在问题中所说的,端口25不使用TLS,这意味着hotmail和gmail脚本之间没有其他区别。我用我的sendmail函数更新我的问题。我不明白我在问题中没有说什么。我总是用gmail,它工作得很好,只是今天它不工作了。hotmail使用端口“25”运行良好…这个问题似乎离题了,因为它是关于电子邮件的可交付性,而不是关于编程。