我已经完成了我已经工作了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。
答案 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;
)并且它立即正在运行。