我最近下载了phpMailer脚本,因为我之前被另一个Stack用户告知,这是一种更有效的方式来完成这样的任务。
我已经设置了邮件程序并测试了从HTML表单发送电子邮件到我的Gmail帐户,这一切都运行良好。
但是,我现在尝试将其应用到由one.com托管的网站上,但它似乎无法运作。
我已经在网站上查看并获得了正确的SMTP设置和正确的端口号,但它似乎也无法正常工作。
我将展示一些代码来解释这种情况。
我的PHP
require 'phpmailer/PHPMailerAutoload.php';
if(isset($_POST['submit'])) {
$mail = new PHPMailer;
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$mail->isSMTP();
$mail->Host = 'mailout.one.com';
$mail->SMTPAuth = true;
$mail->Username = 'myemail@one.com';
$mail->Password = 'mypassword';
$mail->SMTPSecure = 'tls';
$mail->Port = 465;
$mail->AddReplyTo($email, $firstName);
$mail->setFrom($email, $firstName);
$mail->addAddress('example@gmail.com', 'the name');
$mail->isHTML(true);
$mail->Subject = $_POST['subject'];
$mail->Body = '<b>From:</b><br> ' . $firstName . ' ' . $lastName . '<br> <br> <b>Message:</b> <br> ' .$message;
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
在此之后无效,我添加了
$mail->SMTPDebug = 3;
尝试获取错误日志以确定问题,该问题已返回:
连接:打开mailout.one.com:465,timeout = 300,options = array()2016-03-25 14:26:51 SMTP错误:无法连接到服务器:php_network_getaddresses:getaddrinfo failed:nodename nor servname提供或未知(0)2016-03-25 14:26:51 SMTP connect()失败。
我自己从one.com获得了smtp详细信息,因此我不确定连接是否会被自动阻止。
如果有人能帮助我,我会很感激,因为我不知道。
提前致谢,请询问我是否缺少此问题的相关信息。
答案 0 :(得分:1)
您需要阅读the troubleshooting guide。看起来您的DNS失败了,因此无法获取要连接的IP地址。
您还在SMTPSecure = 'tls'
使用Port = 465
;这是行不通的。请改用Port = 587
。
答案 1 :(得分:0)
我花了一些时间在它上面,根据one.com的支持,这是正确的解决方案:
$mail = new PHPMailer;
$mail->Host = 'mailout.one.com';
$mail->SMTPAuth = true;
$mail->Username = '***************';
$mail->Password = '************';
$mail->SMTPSecure = false;
$mail->Port = 25;
答案 2 :(得分:0)
由于我在one.com托管的服务器上尝试使用smtp已经困扰了一段时间,我的配置如下:
/*be careful with the one.com servers strict case sensitivity
renaming the file PHPMailerAutoload.php to phpmailerautoload.php could do the trick, but you need to require it in lower case as well:*/
require_once 'phpmailer/phpmailerautoload.php';
$mail = new PHPMailer; //don't use brackets here!
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Host = "send.one.com";
$mail->Port = 587;
$mail->Username = "**toChangeTp**your webemail-username";
$mail->Password = "**toChangeTp**your webmail-passwort";
答案 3 :(得分:0)
经过几个小时的尝试OSX邮件与SMTP一起工作,我试图让它与PHPMailer一起使用。我的SMTP工作设置是:
$useExceptions = true;
$mail = new PHPMailer( $useExceptions );
try {
$mail->isSMTP();
$mail->Host = 'send.one.com';
$mail->SMTPAuth = true;
$mail->Username = 'xxx@yyy.zz'; // Replace by your SMTP username
$mail->Password = 'xxx123489'; // Replace by your SMTP password
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
...
$mail->setFrom('Your from-address'); // Replace
$mail->addAddress('Your to-address'); // Replace
$mail->addReplyTo('Your reply-address'); // Replace
...
$mail->isHTML(true);
$mail->Subject = 'Your Subject';
$mail->Body = 'Your body';
$mail->AltBody = 'Your plain text body';
...
$mail->send();
} catch (Exception $e) {
...
}
请注意“isSMTP()”部分,直到“Port”是最重要的部分。提到其余设置是为了向您展示使其工作所需的内容。
我必须说,对我来说,下面给出的host ='mailout.one.com'的解决方案根本不起作用。