远程主机上的PHPMailer不起作用

时间:2015-01-02 19:40:45

标签: wamp phpmailer

我正在开展一个小小的电子贺卡项目。 我必须使用PHPMailer从我的远程服务器发送电子邮件。

localy我正在使用此配置(使用我自己的Gmail电子邮件地址),它运行正常。

/ssi/mail.config.php

<?php

$mail = new PHPMailer(true);
$mail->CharSet      = 'utf-8';
$mail->SMTPDebug    = 2;
$mail->isSMTP();
$mail->Host         = 'smtp.gmail.com';
$mail->Port         = '587';
$mail->SMTPSecure   = 'tls';
$mail->SMTPAuth     = true;
$mail->Username     = 'private@gmail.com';
$mail->Password     = '***secret***';
$mail->SMTPSecure   = 'tls';
?>

在我的远程服务器(托管在one.com上)我已经为域创建了一个电子邮件帐户。 我改变了主机和端口,就像帮助台说的那样......但是我不能让它远程工作。

<?php
'ssi/mail.config.php'
$mail = new PHPMailer(true);
$mail->CharSet      = 'utf-8';
$mail->SMTPDebug    = 2;
$mail->isSMTP();
$mail->Host         = 'send.one.com';
$mail->Port         = '25';
$mail->SMTPSecure   = 'none';
$mail->SMTPAuth     = true;
$mail->Username     = 'ecards@iveweygers.be';
$mail->Password     = '***secret***';
$mail->SMTPSecure   = 'none';
?>

再次感谢!

3 个答案:

答案 0 :(得分:2)

你还没有说过它是如何失败的,这使得诊断变得困难。

我真的不推荐任何使用身份验证而不加密的服务。将SMTPSecure设置为&#39;无&#39;没有任何意义。 - 如果您不想要SSL或TLS,只需将其设置为空字符串(或者根本不设置它),您只需要执行一次(不是代码的两倍)。 / p>

答案 1 :(得分:2)

查看one.com页面,有一些问题。对于smtp,他们说使用端口465进行SSL加密。所以,你的代码应该是:

$mail = new PHPMailer(true);
$mail->CharSet      = 'utf-8'; // You can remove this line, utf-8 is the default.
$mail->SMTPDebug    = 2;
$mail->isSMTP();
$mail->Host         = 'send.one.com';
$mail->Port         = 465;
$mail->SMTPSecure   = 'ssl';
$mail->SMTPAuth     = true;
$mail->Username     = 'ecards@iveweygers.be';
$mail->Password     = '***secret***';

另外值得注意的是 - 我需要花费很长时间才能找到:我的SMTP服务器需要身份验证才能发送电子邮件。我假设SMTPAuth = true;处理了这个问题,但事实并非如此。我注意到one.com也这样做 - 即他们告诉你单击Outlook中的按钮,表示你的传出服务器需要身份验证。

我终于将它放在我文件的顶部了:

$pop = new POP3();
$pop->Authorise("send.one.com", 465, 30, "ecards@iveweygers.be", "***secret_password***", 1);

负责身份验证。然后,您可以跳转到$mail = new PHPMailer(true)并设置所有参数并发送邮件。

所以你的整个文件应该是这样的:

$pop = new POP3();
$pop->Authorise("send.one.com", 465, 30, "ecards@iveweygers.be", "***secret_password***", 1);



$mail = new PHPMailer(true);
$mail->CharSet      = 'utf-8'; // You can remove this line, utf-8 is the default.
$mail->SMTPDebug    = 2;
$mail->isSMTP();
$mail->Host         = 'send.one.com';
$mail->Port         = 465;
$mail->SMTPSecure   = 'ssl';
$mail->SMTPAuth     = true;
$mail->Username     = 'ecards@iveweygers.be';
$mail->Password     = '***secret***';

答案 2 :(得分:0)

其他解决方案对我不起作用;这个人做了:

$mail->isSMTP();
$mail->Host = 'mailout.one.com';
$mail->SMTPAuth = false;                            // disable SMTP authentication
$mail->Username = '[your one.com-email]';
$mail->Password = '[your one.com-email password]';
$mail->SMTPSecure = '';                            // leave this blank!
$mail->Port = 25; 

让我知道它是否对你有所帮助!