PHPMailer不能与mail.privateemail.com帐户一起使用

时间:2016-01-22 23:21:01

标签: php email server phpmailer

我已经完成了我已经工作了6个月的网站。现在是时候部署到服务器了。

不幸的是,我无法收到要发送的电子邮件。以前我总是在本地测试,或者在我的个人测试服务器上测试,用phpmailer和我的netfirms电子邮件帐户发送电子邮件。现在我在新服务器上,使用我的netfirms帐户发送工作正常,但没有使用客户端的namecheap电子邮件,通过mail.privateemail.com。这是代码:

<?php
include_once 'db_connect.php';

require 'phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;


function sendFormEmail($mail, $to, $subject, $senderName, $senderEmail, $message, $sendCopy) {
    $_SESSION['token'] = random_string(50);
     $subject = filter_var($subject, FILTER_SANITIZE_STRING);
     $senderName = filter_var($senderName, FILTER_SANITIZE_STRING);
     $senderEmail = filter_var($senderEmail, FILTER_SANITIZE_EMAIL);
     $message = filter_var($_POST['body'], FILTER_SANITIZE_STRING);

        $mail->isSMTP();                                      // Set mailer to use SMTP
        $mail->Host = 'mail.privateemail.com';  // Specify main and backup SMTP servers
        $mail->SMTPDebug  = 2;    
        $mail->SMTPAuth = true;                               // Enable SMTP authentication
        $mail->Username = 'my-email';                 // SMTP username
        $mail->Password = 'my-pass';                           // SMTP password
        $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
        $mail->Port = 25;                                    // TCP port to connect to

        $mail->setFrom('webmaster@mysite.com', 'mysite.com'); 
        $mail->addAddress('my-email', 'me');     
        $mail->addReplyTo($senderEmail, $senderName);

        $mail->Subject = "mysite.com: " . $subject;
        $mail->Body    = "<h1>You've received a message through the contact form at mysite.com: </h1><br><p style='white-space: pre-wrap;'>" . $message . "</p>";
        $mail->AltBody = "You've received a message through the contact form at mysite.com: " . $message;

        if($mail->send()) {
         return "wooho!";
        }
    }
}

它一直返回该功能,但没有电子邮件。如果我只将主机,用户名,密码和端口更改为我的netfirms电子邮件,它可以完美运行。我还使用第三方客户端登录此电子邮件地址,以验证我是否具有正确的服务器设置,并且工作正常。

这是phpmailer调试输出:

2016-01-22 23:13:47 SERVER -> CLIENT: 220 PrivateEmail.com Mail Node 
2016-01-22 23:13:47 CLIENT -> SERVER: EHLO mysite.com 
2016-01-22 23:13:47 SERVER -> CLIENT: 250-mta2.ox.privateemail.com 250-PIPELINING 250-SIZE 81788928 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN 
2016-01-22 23:13:47 CLIENT -> SERVER: STARTTLS 
2016-01-22 23:13:47 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS 2016-01-22 23:13:47  CLIENT -> SERVER: EHLO mysite.com 
2016-01-22 23:13:47 SERVER -> CLIENT: 250-mta2.ox.privateemail.com 250-PIPELINING 250-SIZE 81788928 250-ETRN 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN 
2016-01-22 23:13:47 CLIENT -> SERVER: AUTH LOGIN 
2016-01-22 23:13:47 SERVER -> CLIENT: 334 VXNlcm5hbWU6 
2016-01-22 23:13:47 CLIENT -> SERVER: d2VibWFzdGVyQGNocmlzY29tcG9zZXMuY29t 
2016-01-22 23:13:47 SERVER -> CLIENT: 334 UGFzc3dvcmQ6 
2016-01-22 23:13:47 CLIENT -> SERVER: U3VwM3ItUzNjcjN0 
2016-01-22 23:13:47 SERVER -> CLIENT: 235 2.7.0 Authentication successful 
2016-01-22 23:13:47 CLIENT -> SERVER: MAIL FROM: 
2016-01-22 23:13:47 SERVER -> CLIENT: 250 2.1.0 Ok 
2016-01-22 23:13:47 CLIENT -> SERVER: RCPT TO: 
2016-01-22 23:13:47 SERVER -> CLIENT: 250 2.1.5 Ok 
2016-01-22 23:13:47 CLIENT -> SERVER: DATA 
2016-01-22 23:13:47 SERVER -> CLIENT: 354 End data with . 
2016-01-22 23:13:47 CLIENT -> SERVER: Date: Fri, 22 Jan 
2016 18:13:46 -0500 
2016-01-22 23:13:47 CLIENT -> SERVER: To: me 
2016-01-22 23:13:47 CLIENT -> SERVER: From: "mysite.com" 
2016-01-22 23:13:47 CLIENT -> SERVER: Reply-To: me 
2016-01-22 23:13:47 CLIENT -> SERVER: Subject: mysite.com: test 
2016-01-22 23:13:47 CLIENT -> SERVER: Message-ID: <57602f8384a430fc72ff9ba41db09f97@mysite.com> 
2016-01-22 23:13:47 CLIENT -> SERVER: X-Mailer: PHPMailer 5.2.13 (https://github.com/PHPMailer/PHPMailer) 
2016-01-22 23:13:47 CLIENT -> SERVER: MIME-Version: 1.0 
2016-01-22 23:13:47 CLIENT -> SERVER: Content-Type: multipart/alternative; 
2016-01-22 23:13:47 CLIENT -> SERVER: boundary="b1_57602f8384a430fc72ff9ba41db09f97" 
2016-01-22 23:13:47 CLIENT -> SERVER: Content-Transfer-Encoding: 8bit 
2016-01-22 23:13:47 CLIENT -> SERVER: 
2016-01-22 23:13:47 CLIENT -> SERVER: This is a multi-part message in MIME format. 
2016-01-22 23:13:47 CLIENT -> SERVER: 
2016-01-22 23:13:47 CLIENT -> SERVER: --b1_57602f8384a430fc72ff9ba41db09f97 
2016-01-22 23:13:47 CLIENT -> SERVER: Content-Type: text/plain; charset=us-ascii 
2016-01-22 23:13:47 CLIENT -> SERVER: 
2016-01-22 23:13:47 CLIENT -> SERVER: You've received a message through the contact form at mysite.com: test 
2016-01-22 23:13:47 CLIENT -> SERVER: 
2016-01-22 23:13:47 CLIENT -> SERVER: 
2016-01-22 23:13:47 CLIENT -> SERVER: --b1_57602f8384a430fc72ff9ba41db09f97 
2016-01-22 23:13:47 CLIENT -> SERVER: Content-Type: text/html; charset=us-ascii 
2016-01-22 23:13:47 CLIENT -> SERVER: 
2016-01-22 23:13:47 CLIENT -> SERVER:
You've received a message through the contact form at mysite.com:

test

2016-01-22 23:13:47 CLIENT -> SERVER: 2016-01-22 23:13:47   CLIENT -> SERVER: 
2016-01-22 23:13:47 CLIENT -> SERVER: 
2016-01-22 23:13:47 CLIENT -> SERVER: --b1_57602f8384a430fc72ff9ba41db09f97-- 
2016-01-22 23:13:47 CLIENT -> SERVER: 
2016-01-22 23:13:47 CLIENT -> SERVER: . 
2016-01-22 23:13:47 SERVER -> CLIENT: 250 2.0.0 Ok: queued as 8B426600ED 
2016-01-22 23:13:47 CLIENT -> SERVER: QUIT 
2016-01-22 23:13:47 SERVER -> CLIENT: 221 2.0.0 Bye

我已经待了很长时间了,而且我真的没有想法。任何帮助将不胜感激。

另外,我知道客户端可以只创建一个gmail帐户,我们可以发送通过即可。如果可能的话,我真的很想使用他们支付的电子邮件地址。开始真的不喜欢namecheap。

2 个答案:

答案 0 :(得分:0)

如果您没有从SMTP服务器收到错误,则会发送电子邮件 但它没有到达收件人邮箱。我认为该电子邮件被归类为垃圾邮件,您是否正确配置了SPF记录?根据我的经验,这是最常见的问题...... 例如,如果您的生产站点是mysite.com且SMTP服务器域是privateemail.com,则在您的mysite.com DNS记录上,您必须添加如下TXT记录:

mysite.com.  TXT  v=spf1 include:privateemail.com +a +mx ~all

我希望这可以提供帮助

答案 1 :(得分:0)

对于将来遇到相同问题的任何人,此处的Namecheap网站上都有专门的说明:https://www.namecheap.com/support/knowledgebase/article.aspx/9751/31/how-to-configure-php-mailsmtp-authentication-for-different-cms

在我的情况下与默认配置相比的关键差异在于我必须将端口更改为587 (如此$mail->Port = 587;)并且它立即正在运行。