我的问题很简单:使用PHPMailer发送电子邮件,我遵守了哥达的规则:
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTP_AUTH = false;
$mail->Port = 25;
$mail->Host = "relay-hosting.secureserver.net";
$mail->FromName = "mycomercial@mycomercialemail.com.br";
$mail->SMTPDebug = 2;
$mail->Subject = "Test";
$mail->Body = "hello";
$mail->AddAddress("mygmailemail@gmail.com");
if(!$mail->Send()) {
echo "Error: " . $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
此代码是我在许多搜索的论坛中看到的代码,但是我仍然无法发送电子邮件,收到的是:
2018-10-16 22:31:25 SMTP错误:无法连接到服务器:连接被拒绝(111)2018-10-16 22:31:25 SMTP connect()失败
这是他们推荐的服务器?为什么我无法连接?谢谢大家的帮助
答案 0 :(得分:1)
好吧,我已经联系了goDaddy支持人员(非常好),他们说要在服务器内部使用localhost,所以我更改了代码,仍然无法正常工作,但至少已连接到服务器并给了我错误:STARTTLS ,在网上搜索后,我发现了以下解决方案:solution
$mail = new PHPMailer(true);
$mail->IsSMTP(); // Using SMTP.
$mail->SMTPDebug = 1;
$mail->SMTPAuth = false; // Enables SMTP authentication.
$mail->Host = "localhost"; // GoDaddy support said to use localhost
$mail->Port = 25;
$mail->SMTPSecure = 'none';
//havent read yet, but this made it work just fine
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->AddReplyTo('comercial@email.com.br', 'Me');
$mail->AddAddress('my@gmail.com', 'Them');
$mail->SetFrom('comercial@email.com.br', 'Me');
$mail->Subject = 'PHPMailer Test Subject via smtp, basic with authentication';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';
$mail->MsgHTML("Hi, this is an test email");
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
最后,他们还给了我这个脚本:Github以三种不同的方式测试发送的电子邮件,但是此脚本发送的电子邮件可能进入了您的垃圾邮件(第一个脚本正常),所以他们说这是使用TXT记录和DNS配置某些内容所必需的,这是支持人员提供给我的数据:
添加TXT记录
主持人:@
TXT值:v = spf1一个mx ptr包括:secureserver.net -all
TTL:1小时
但是我对此不确定,因为我不得不去看医生,因此我无法留下这个解决方案,谢谢大家。
答案 1 :(得分:0)
问题是通过goDaddy进行的SMTP连接有点棘手,因为它们对发送电子邮件施加了严格的限制。如果不需要SMTP,则可以使用以下代码强制phpMailer使用内置的mail()函数:
$mail = new PHPMailer();
$mail->isMail(); //using mail() function