发送邮件在本地工作但不在服务器上工作

时间:2013-08-22 16:40:03

标签: php

我已经搜索过了,这里的问题都没有帮我解决问题。

我必须在我正在处理的网站上发送一封电子邮件,它在本地工作,但是当我尝试在服务器上发送一封电子邮件时,它会给我一个致命的错误。

代码:

send_mail.js

$(function() {
   $('.enviar').click(function(){
      event.preventDefault();
      $.ajax({
      url: 'modules/send_mail.php',
      type: 'POST',
      data : {
        nome : $('#nome').val(),
        mail : $('#mail').val(),
        assunto : $('#assunto').val(),
        mensagem : $('#mensagem').val()
      },
      success: function (data) {
         console.log(data);
      },
      error: function(xhr, textStatus, data) {
        console.log(xhr.statusText);
        console.log(textStatus);
        console.log(data);
      }
    });
   });
});

send_mail.php

<?
include_once ('../config.php');

$mail_to = "ricardo.ac.dc@gmail.com";
$nome = stripslashes(strip_tags($_POST['nome']));
$mail = stripslashes(strip_tags($_POST['mail']));
$assunto = stripslashes(strip_tags($_POST['assunto']));
$mensagem = stripslashes(strip_tags($_POST['mensagem']));

$texto = $nome ."(". $mail . ")\r\n";
$texto .= $mensagem;

mail ($mail_to,$assunto,$texto);    
?>

form.php的

<div class="form_contactos">
   <div class="form_text">
      <input name="nome" id="nome" placeholder=" nome" type="text" class="linha_simples"/>
      <input name="mail" id="mail" placeholder=" e-mail" type="email" class="linha_simples"/>
      <input name="assunto" id="assunto" placeholder=" assunto" type="text" class="linha_simples"/>
   </div>

   <textarea name="mensagem" id="mensagem" placeholder=" mensagem"  class="caixa_texto"></textarea>
   <input type="submit" name="enviar" class="submit_button enviar" id="enviar" value="" />

</div>

的config.php

<?php

$ligacao = 'local';

if ($ligacao == 'server')
{
    //Para ligar a SQL Server, utilizar PHP 5.2.6 (Wampserver 2C)
    $servidor = "localhost";
    $utilizador = "s002349_admin";
    $password = "Torre2008";
    $bd = "s002349_temp_almadados";

}
else
{

    //Para ligar a SQL Server, utilizar PHP 5.2.6 (Wampserver 2C)
    $servidor = "localhost";
    $utilizador = "root";
    $password = "root";
    $bd = "almadados";
}


//Ligação à BD
$padrao = mysql_connect($servidor, $utilizador, $password)
or die("Erro ao ligar a $servidor");

//Selecção de BD a utilizar
$seleccao = mysql_select_db($bd, $padrao)
or die("Erro ao aceder a $bd");

?>

我收到的错误是这个:

  


致命错误:函数名称必须是字符串    /home/s002349/public_html/almadados.net/new_site/modules/send_mail.php 的   在线 26
send_mail.js:22

任何人都可以帮我解决这个问题吗?

  

我想到了可行的东西......我将不得不这样做   在这个网站上实现phplist,所以我的想法也是发送这封邮件   通过phplist,这可以工作,并解决我的问题吗?

*我已清除send_mail.php上的所有空白行并清除了浏览器上的所有缓存,因此我不明白为什么它仍显示该行*

3 个答案:

答案 0 :(得分:0)

首先要将此<?更改为此<?php,某些服务器无法支持短标记

如果npt正常工作,请尝试更改此内容:

mail ($mail_to,$assunto,$texto); 

到此:

mail($mail_to,$assunto,$texto); 

函数名称和括号之间有空格

<强>更新
改变这个:

$padrao = mysql_connect($servidor, $utilizador, $password)
or die("Erro ao ligar a $servidor");

到此:

$padrao = mysql_connect($servidor, $utilizador, $password)
if (!$padrao)
  {
  die('Could not connect: ' . mysql_error());
  }

变量$seleccao

的情况相同

答案 1 :(得分:0)

这可能是因为服务器不支持短标签。我强烈建议远离这些。将<?替换为<?php

答案 2 :(得分:0)

尝试替换

or die("Erro ao ligar a $servidor");

if(!$padrao){die("Erro ao ligar a ".$servidor);}