无法使用PHP连接到SMTP

无法使用PHP连接到SMTP,php,smtp,phpmailer,email,Php,Smtp,Phpmailer,Email,我正在尝试与另一台主机发送电子邮件,每次收到此错误->邮件程序错误:SMTP连接失败。这是我的密码 $mail = new PHPMailer; $mail->isSMTP(); $mail->SMTPDebug = 0; $mail->Debugoutput = 'html'; $mail->Host = ' host IP '; $mail->Port = 587; $mail->SMTPSecu

我正在尝试与另一台主机发送电子邮件,每次收到此错误->邮件程序错误:SMTP连接失败。这是我的密码

    $mail = new PHPMailer;
    $mail->isSMTP();
    $mail->SMTPDebug = 0;
    $mail->Debugoutput = 'html';

    $mail->Host = ' host IP '; 
    $mail->Port = 587;
    $mail->SMTPSecure = 'ssl'; // I had also tried with TLS

    $mail->SMTPAuth = true;
    $mail->Username = "my@username.com";
    $mail->Password = "password";

    $mail->setFrom('my@username.com', 'MY Personal');

    $mail->addAddress($To);

    if($MoreAddresses != "")
    {
        foreach($MoreAddresses as $Address)
        {
            $mail->addAddress($Address);
        }
    }

    $mail->Subject = $Subject;
    $mail->msgHTML($Body);
    $mail->AltBody = 'This email contains HTML contents.';
    if($MoreAddresses != "")
    {
        foreach($MoreAddresses as $Address)
        {
            $mail->addAddress($Address);
        }
    }

    $mail->Subject = $Subject;
    $mail->msgHTML($Body);
    $mail->AltBody = 'This email contains HTML contents.';

    if (!$mail->send()) 
    {
        return "Mailer Error: " . $mail->ErrorInfo;
    }
    else
    {
        return "Message sent!";
    }
我试过回答很多问题,但都帮不了我。

当你使用

$mail->Port = 587;
$mail->SMTPSecure = 'ssl';
然后端口是:tls=587,ssl=465

$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Username = "myemail@gmail.com";
$mail->Password = "**********";
$mail->Port = "465";
这是一个工作配置。
尝试替换您拥有的内容添加mail.php使用下面的代码对我来说很好

include "../Mail/Mail.php";

$from = "test<emai>"; 
$to = $toname."<".$tomail.">"; 
$subject = $subject;
$body =$body; 
$host ="ssl://smtp.gmail.com";
$port = "465"; 
$username = "test@gmail.com"; 
$password = "123456"; 
$headers['From'] =$from;
$headers['To'] = $to;
$headers['Bcc'] = $from;
$headers['Subject'] = $subject;
$headers['Reply-To'] = 'no-replay<no-replay>';
$smtp = Mail::factory('smtp',   
array ('host' => $host,     'port' => $port,   
'auth' => true,     'username' => $username,     'password' => $password)); 
$mail = $smtp->send($to, $headers, $body); 
if (PEAR::isError($mail)) 
{  
  $mail->getMessage() ; 
}
这是php邮件的代码

$to = "".$_REQUEST['txtphp_to']."";
$subject = "Nullam id dolor id nibh ultricies vehicula.";
$txt = "Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.
Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.";
$headers = "From: $s_emailid" . "\r\n";// .
if(mail($to,$subject,$txt,$headers))
{
echo "done";
}
else
{
echo "error";
}

您的日志中必须有更多错误消息。仔细研究。你可以先问问自己为什么要两次处理MoreAddresses。然后问问自己,使用if$MoreAddresses测试数组是否合乎逻辑!=然后自问是$MoreAddresses实际上是一个数组然后自问是PHPAdd中启用的php_openssl扩展,它与您的答案相关联,使用编辑链接而不是作为注释。没有人可以读取评论中的代码设置outMail服务器的SMTP端口使用25或587否将其添加到原始答案中。每个问题只需回答一个问题。我已经通过安全主机网络进行了检查,显示000.000.000.000:465 urd已打开。它是否会在该主机中产生任何问题。您可以尝试简单的php邮件功能,并检查它是否工作。对同一问题的三个答案有点过分。对任何人来说,一个答案就足够了。曾经的国王永远是国王,但一旦成为骑士就足够了