php.com的phpMailer支持

时间:2016-03-25 14:30:40

标签: php phpmailer

我最近下载了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详细信息,因此我不确定连接是否会被自动阻止。

如果有人能帮助我,我会很感激,因为我不知道。

提前致谢,请询问我是否缺少此问题的相关信息。

4 个答案:

答案 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'的解决方案根本不起作用。