【问题标题】:error in sending confirmation email发送确认邮件错误
【发布时间】:2011-12-14 00:15:57
【问题描述】:

我正在创建一个用户注册表单,在他们填写完所有信息并提交表单后,所有数据都会进入我的数据库表中。成功注册后,确认电子邮件将发送到用户在注册表中提供的用户电子邮件地址。但是电子邮件没有发送。我收到如下所示的错误消息:

    Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port        
     25,  verify your "SMTP" and "smtp_port" setting in 
  php.ini or use ini_set() in D:\wamp\www\boobloom\site\class.Utility.inc.php on line 25
   Registration Successful. 

这是我在注册表单中使用的功能:

if(mysql_query($insert_query)){
    Utility::sendRegConfirmEmail(mysql_insert_id());
    echo $message = "Registration Successful.";
}else{
    echo $message = "Registration not Successful.";
}

和:

 static function sendRegConfirmEmail($id){
    $query = "SELECT * FROM users WHERE id = '".$id."'";
    $result = mysql_query($query) or die(mysql_error());
    $row  = mysql_fetch_assoc($result);
    $to = $row['email'];
            $confirmationcode = $row['confirmation_code'];
    $tVar = time();
    $confirmLink = HTTP_PATH.'registrationConfirm/'.md5($tVar).'/'.$to.'/'.$confirmationcode.'/'.md5($to);
    // to fetch the email template
    $queryET = "SELECT * FROM emailtemplates WHERE type = 'registration_confirmation'";
    $resultET = mysql_query($queryET) or die(mysql_error());
    $rowET  = mysql_fetch_assoc($resultET);
    $subject = $rowET['subject'];
    $toRepArray   = array('[!Name!]','[!email!]','[!PASSWORD!]','[!activation_code!]','[!Link!]');
    $fromRepArray = array($to,$to,$row['password'],$confirmationcode,$confirmLink);
    $message = str_replace($toRepArray,$fromRepArray,$rowET['message']);
    $headers  = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $headers .= "From: boobloom.com <".SITE_MAIL.">\r\n";
            mail($to, $subject, $message, $headers);

}

【问题讨论】:

  • 就此类问题联系您的服务器管理员
  • omnath,您似乎没有阅读错误消息,因为它告诉您问题出在哪里,并且与用户电子邮件 ID 无关。其次,您没有告诉我们代码所在的文件,因为错误指定了 class.Utility.inc.php,但我们可以查看任何与我们所知无关的代码。

标签: php oop smtp localhost


【解决方案1】:

此错误来自您的 smtp 设置,而不是您的代码。您应该验证您的 smtp 是否已正确设置。

尝试使用

echo ini_get("SMTP");
echo ini_get("smtp_port");

获取您的 SMTP 详细信息。 检查你的 php.ini

应该是这样的格式

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

【讨论】:

  • 是的,我和你写的一样...localhost25
  • 现在,我正在使用我的网站管理面板。注册成功的消息来了。任何错误和警告都不会显示,但电子邮件不会发送到地址...
  • @omnath 检查邮件中的垃圾文件夹!
猜你喜欢
  • 2015-02-02
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多