PHPMailer:使用远程SMTP服务器,在本地主机下工作,在远程服务器上拒绝连接(111)
我这里有个奇怪的问题。我正在尝试使用PHPMailer通过SMTP发送电子邮件。我有一个由GoDaddy托管的网站,我正试图使用该SMTP帐户发送邮件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(我对它一
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