2012-04-22 19 views
0

私は連絡先フォームを持っていますが、メッセージは私が宣言した電子メールに送信していません。これはsubmit.phpファイルされる:警告電子メールが送信されない


submit.phpがブラウザで開かれている場合

<?php 

/* config start */ 

$emailAddress = '[email protected]'; 

/* config end */ 

require "../php/class.phpmailer.php"; 

session_name("fancyform"); 
session_start(); 


foreach($_POST as $k => $v) 
{ 
    if(ini_get('magic_quotes_gpc')) 
     $_POST[$k] = stripslashes($_POST[$k]); 

    $_POST[$k] = htmlspecialchars(strip_tags($_POST[$k])); 
} 


$err = array(); 

if(!checkLen('name')) 
    $err[] = 'The name field is too short or empty!'; 

if(!checkLen('email')) 
    $err[] = 'The email field is too short or empty!'; 
elseif(!checkEmail($_POST['email'])) 
    $err[] = 'Your email is not valid!'; 

if(!checkLen('subject')) 
    $err[] = 'You have not selected a subject!'; 

if(!checkLen('message')) 
    $err[] = 'The message field is too short or empty!'; 

if((int)$_POST['captcha'] != $_SESSION['expect']) 
    $err[] = 'The captcha code is wrong!'; 


if(count($err)) 
{ 
    if($_POST['ajax']) 
    { 
     echo '-1'; 
    } 

    else if($_SERVER['HTTP_REFERER']) 
    { 
     $_SESSION['errStr'] = implode('<br />', $err); 
     $_SESSION['post'] = $_POST; 

     header('Location: '.$_SERVER['HTTP_REFERER']); 
    } 

    exit; 
} 

$msg = 
'Name: '.$_POST['name'].'<br /> 
Email: '.$_POST['email'].'<br /> 
IP: '.$_SERVER['REMOTE_ADDR'].'<br /><br /> 

Message:<br /><br /> 

'.nl2br($_POST['message']).' 

'; 

$mail = new PHPMailer(); 
$mail->IsMail(); 

$mail->AddReplyTo($_POST['email'], $_POST['name']); 
$mail->AddAddress($emailAddress); 
$mail->SetFrom($_POST['email'], $_POST['name']); 
$mail->Subject = "A new ".mb_strtolower($_POST['subject'])." from ".$_POST['name']." | contact form feedback"; 

$mail->MsgHTML($msg); 

$mail->Send(); 


unset($_SESSION['post']); 

if($_POST['ajax']) 
{ 
    echo '1'; 
} 
else 
{ 
    $_SESSION['sent'] = 1; 

    if($_SERVER['HTTP_REFERER']) 
     header('Location: '.$_SERVER['HTTP_REFERER']); 

    exit; 
} 

function checkLen($str, $len = 2) 
{ 
    return isset($_POST[$str]) && mb_strlen(strip_tags($_POST[$str]), "utf-8") > $len; 
} 

function checkEmail($str) 
{ 
    return preg_match("/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $str); 
} 

?> 

、私は次のエラーメッセージが表示されます(../ PHP/class.phpmailerが必要です。 PHPは)[function.require]:ストリームをオープンに失敗しました: ライン上 /home/content/96/9227096/html/submit.phpでそのようなファイルやディレクトリ
致命的なエラー:require()[function.require]:オープンに失敗しました '../php/class.phpmailer.php' (include_path = '。:/ usr/local/php5_3/lib/php')in ライン上/home/content/96/9227096/html/submit.php

Iはまた、私は自分のコードに次のリレーサーバを追加する必要があるかもしれません私のホスティングサーバーで言われました。 (ただし、私はどこにいるのか分かりません) relay-hosting.secureserver.net

+1

このエラーでは、必要なPHPファイル( '../ php/class.phpmailer.php')を読み込めないことが明らかです。電子メールサーバーとやり取りするコードに到達することさえありません。 – David

答えて

0

require "../php/class.phpmailer.php";は、 ../php/class.phpmailer.phpファイルがロードされ、ロードできない場合はスクリプトが終了します。

このスクリプトをロードできません。それは、いくつかの理由のいずれかである可能性があります。おそらくそこにはないでしょう。多分あなたが提供した道は間違っています。たぶんそれはファイル許可の問題です。あなたはその部分を理解しなければなりません。

しかし、ロードできないため、スクリプトはエラーメッセージで終了します。

+0

okですが、class.phpmailer.phpはphpフォルダにあり、送信は別のフォルダにありますので、ファイルパスが正しいことを100%確信しています。それは他の何かになることができますか? – user1165861

0

私はいくつかのホスティングプロバイダで同様の問題に遭遇しました。パスが良好であったとしても、ファイルを含めずにスクリプト全体を終了させる必要があります。そこにファイルへの実際のパスを書くことができますし、おそらくそれが助けになります。この問題以来、私は、JavaやC#のデスクトップアプリに似一つのクラスでアプリケーションを書くために

require(getcwd().'actual/path/relevant/to/index.php'); 

とstarderを使用し始めました。

関連する問題