【发布时间】:2016-04-29 16:41:31
【问题描述】:
我已经开发了 6 个月的网站即将完成。是时候部署到服务器了。
很遗憾,我无法发送电子邮件。以前我总是在本地或在我的个人测试服务器上进行测试,使用 phpmailer 和我的 netfirms 电子邮件帐户发送电子邮件。现在我在新服务器上,使用我的 netfirms 帐户发送工作正常,但不能通过 mail.privateemail.com 使用客户的 namecheap 电子邮件。代码如下:
<?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 了。
【问题讨论】:
-
尝试格式化调试输出,使其易于阅读。
-
完成!现在应该好了
-
调试输出显示成功传送到该邮件服务器,因此 PHPMailer 的参与已经结束。您应该阅读邮件服务器的日志,了解之后邮件发生了什么变化。
-
谢谢!我只需要知道去哪里寻找。
标签: php email server phpmailer