PHPMailer:使用远程SMTP服务器,在本地主机下工作,在远程服务器上拒绝连接(111)

PHPMailer:使用远程SMTP服务器,在本地主机下工作,在远程服务器上拒绝连接(111),php,email,smtp,phpmailer,Php,Email,Smtp,Phpmailer,我这里有个奇怪的问题。我正在尝试使用PHPMailer通过SMTP发送电子邮件。我有一个由GoDaddy托管的网站,我正试图使用该SMTP帐户发送邮件 如果我在本地主机服务器上执行PHP文件,它就会工作 如果我在GoDaddy的服务器上执行我的PHP文件,它将不起作用 我收到的错误消息是: SMTP->错误:无法连接到服务器:连接被拒绝(111) 我在本地主机和远程服务器上都选中了phpinfo。两者都有smtp\u端口列为25。我在我的机器上使用WAMP,服务器是某种形式的Linux(我对它一

我这里有个奇怪的问题。我正在尝试使用PHPMailer通过SMTP发送电子邮件。我有一个由GoDaddy托管的网站,我正试图使用该SMTP帐户发送邮件

  • 如果我在本地主机服务器上执行PHP文件,它就会工作
  • 如果我在GoDaddy的服务器上执行我的PHP文件,它将不起作用
  • 我收到的错误消息是:

    SMTP->错误:无法连接到服务器:连接被拒绝(111)

    我在本地主机和远程服务器上都选中了
    phpinfo
    。两者都有
    smtp\u端口
    列为
    25
    。我在我的机器上使用WAMP,服务器是某种形式的Linux(我对它一无所知,也不知道如何管理)

    以下是相关代码:

    INDEX.PHP

    <?php
    date_default_timezone_set('America/Los_Angeles');
    include_once("phpmailer/class.phpmailer.php");
    
    $mail = new PHPMailer;
    $mail->SMTPDebug = 1;
    $mail->Port = 25;
    
    $mail->IsSMTP();
    $mail->Host = 'smtpout.secureserver.net';
    $mail->SMTPAuth = true;
    $mail->Username = 'username@site.com';
    $mail->Password = 'super_secret_password';
    $mail->SMTPSecure = ''; // tried ssl and tls, with same result
    
    $mail->ClearAddresses();
    $mail->AddAddress('receiver@hotmail.com', 'Receiver Name');
    $mail->From = "username@site.com";
    $mail->FromName = "Username";
    $mail->Subject = 'Hi there';
    $mail->Body = "This is a message";
    
    if ($mail->Send()) {
        echo "Message sent!\n";
    }
    else {
        echo "Message failed!\n";
        print_r($mail->ErrorInfo);
    }
    
    exit();
    ?>
    

    我认为您应该执行两个步骤 1) 按照godaddy support上的建议检查您的端口 2) 使用“中继宿主.secureserver.net”作为主机,而不是“smtpout.secureserver.net”

    GoDaddy确实允许使用Gmail作为SMTP发送电子邮件,只需去掉SMTP.Gmail.com并使用其主机即可。这是我的设置:

    $mail = new PHPMailer();
    $mail->isSMTP();
    $mail->Host = "relay-hosting.secureserver.net";
    $mail->Username = "your-account@gmail.com";
    $mail->Password = "yourpassword";
    // ...
    // send from, send to, body, etc...
    

    参考(参见前两篇文章)

    如果您的主机有自己的电子邮件服务器,服务器将使用以下端口25465587。 GoDaddy的设置:

    $mail->isSMTP(); 
    $mail->Host = localhost; 
    $mail->SMTPAuth = true;
    $mail->Username = 'example@gmail.com';
    $mail->Password = 'password';
    
    //$mail->SMTPSecure = 'tls'; 
    //$mail->Port = 587;
    
    对于其他提供商,您必须使用域创建邮箱:

    $mail->isSMTP(); 
    $mail->Host = localhost; 
    $mail->SMTPAuth = true;
    $mail->Username = 'example@yourdomain.com';
    $mail->Password = 'password';
    
    //$mail->SMTPSecure = 'tls'; 
    //$mail->Port = 587;
    

    PHP可能在25上工作,您尝试连接的SMTP服务器可能不工作。请向您的主机提供商咨询有关正确使用其中继的说明。@Zarathuztra如果这是问题所在,那么它在两种情况下都会失败-因为在每种情况下,我都使用相同的SMTP服务器。在这种情况下,请确保25处于打开状态。您的主机箱上是否运行IPtables?登录并运行sudo iptables-L,查看其中有哪些规则,并检查是否允许SMTP通过。@Zarathuztra正如我在问题中强调的,我不知道如何执行您刚才建议的任何操作。例如,“登录”是什么意思?我习惯的唯一登录方式是通过FTP,我猜这不是您所指的。拒绝连接意味着某些人主动拒绝连接。smtp服务器未在端口25上运行且tcp连接失败,或者存在防火墙,防火墙通过icmp拒绝阻止外部端口25