我正在开展一个小小的电子贺卡项目。 我必须使用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';
?>
再次感谢!
答案 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;
让我知道它是否对你有所帮助!