Jump to content

Recommended Posts

Hi!  I created a simple form using 'PHPformmail' to send user details through to a support ticket program.

 

But, when it arrives it shows the reply address as 'online.submit@[mydomain.com], which screws the support program up.

 

In my form I ask for the users reply address - is their any way to use this info?  I tried, but failed.

 

The piece of script I believe is reponsible is:

 

$from = "online.submit@" . HOST_NAME ;

 

I tried replacing it with the value from the form:

 

value="<?php  print HtmlSpecialChars( $HTTP_POST_VARS[ "Reply_addres" ] ); ?>"

 

as well as a few other variations, but with no luck.  My PHP skills don't stretch any further!

 

Any ideas or suggestions?

 

Thanks,

 

Grant

Link to comment
https://forums.phpfreaks.com/topic/129701-how-to-change-the-reply-email-address/
Share on other sites

  • 2 weeks later...

hey there, im slightly confused in what your asking, can you post your script?

 

is there a problem when the email gets to you there is no email to reply to (the senders email that they have input into the form) you just get 'online.submit@[mydomain.com]'?

  • 2 weeks later...

Hi!  Sorry in the delay replying to your question!.

 

When my hosting customers want to submit a support ticket, they email a designated 'support' email address which then funnels it through to a ticket system.

 

If the email is sent via a standard email program, the information that is displayed on the ticket is

similar to:

 

Subject: Test support ticket #2

To: "'Tech Support'"

From: grant@mydomain.com.au

Reply-To: grant@mydomain.com.au

 

Which allows for a simply 'reply' through the ticketing system.  If I try to send an email to the same support email address, but going through my online form, it displays as:

 

Subject: Technical Support enquiry

To: support@mydomain.com.au

From: online.submit@mydommain.com.au

Reply-To: online.submit@mydomain.com.au

 

which screws up the ticket as you can't reply to the reply address.

 

So, what i'm trying to achieve is:  Using my online form to make this line

 

Reply-To: online.submit@mydomain.com.au

 

the same as the reply address as I request in the form.  Eg, in the form they fill out a field called 'Reply address' and that makes the above line display:

 

Reply-To: johncustomer@anotherdomain.com

 

so when in the ticketing program, when your reply it has a real email address to reply to.

 

I hope that all makes sense!  I'll put the script in a separate post.

 

Grant

 

 

Here is the form script:  I'll post the ohter bits next.

 

<?php

if( !$isHideForm ):

global $sErr ;

if( $sErr ) print "<br><a name='error'></a><center><font class='form_error' >$sErr</font></center><br>";

 

$starColor = $sErr ? "#ff0000" : "#000000";

$style=" class='form_text' ";

?>

 

<form name="frmFormMail" action="<?php print PHP_SELF ?>" method='post' enctype='multipart/form-data'>

<input type='hidden' name='formmail_submit' value='Y'>

<input type='hidden' name='esh_formmail_recipient' value="support@mydomain.com.au">

<input type='hidden' name='esh_formmail_subject' value="Technical Support enquiry">

<input type='hidden' name='esh_formmail_bcc' value="">

<input type='hidden' name='esh_formmail_return_subject' value="">

<input type='hidden' name='esh_formmail_return_msg' value="">

<input type='hidden' name='esh_formmail_mail_and_file' value="">

<input type='hidden' name='esh_formmail_charset' value="">

 

<table cellspacing='16' cellpadding='0' border='0'  >

<tr>

<td class="form_field" valign='top' align='right'>Your name:</td>

<td class="form_text">

<input type="text" name="Name"  value="<?php  print HtmlSpecialChars( $HTTP_POST_VARS[ "Name" ] ); ?>" class='text_box2'>

</td>

</tr>

 

<tr>

<td class="form_field" valign='top' align='right'>Website address:</td>

<td class="form_text">

<input type="text" name="Website_address"  value="<?php  print HtmlSpecialChars( $HTTP_POST_VARS[ "Website_address" ] ); ?>" class='text_box2'>

</td>

</tr>

 

<tr>

<td class="form_field" valign='top' align='right'>Reply email address: </td>

<td class="form_text">

<input type="generic email" name="Reply_addres"  value="<?php  print HtmlSpecialChars( $HTTP_POST_VARS[ "Reply_addres" ] ); ?>" class='text_box2'>

</td>

</tr>

 

<tr>

<td class="form_field" valign='top' align='right'>Details:</td>

<td class="form_text">

<textarea name="Details" rows=6 cols=30 ><?php  print HtmlSpecialChars( $HTTP_POST_VARS[ "Details" ] ); ?></textarea>

 

</td>

</tr>

 

 

<tr><td colspan=3 align='center'><input type='submit' value='Submit'>    <input type='button' value='Cancel' onclick="location.href='/';"></td></tr>

</table>

 

 

</form>

 

 

 

 

<!-- =======================  End:  ======================= -->

 

 

 

<?php

if( $sErr ) print "<script language='javascript' type='text/javascript'>location.href='#error';</script>";;;

 

else: //!$isHideForm

print( "<br><br><hr><center><p class='basic'>Your form has been sent. Thank you.</p><br><br><input type='button' value='Home' onclick=\"location.href='/';\"></center><br><br>" );

endif; //!$isHideForm

?>

<?

define( "ADMIN_MAIL", "s6software@users.sourceforge.net" ); // bug report email

 

define( "HOST_NAME", getEnv( "HTTP_HOST" ) );

define( "PHP_SELF", getEnv( "SCRIPT_NAME" ) );

 

define( "ERR_MISSING", "Missing required field : " );

define( "ERR_EMAIL", "Please type in a valid e-mail address : " );

define( "ERR_CREDIT_CARD_NUMBER", "Please check the credit card number : " );

define( "ERR_CREDIT_CARD_EXPIRED", "Please check the credit card expiry date : " );

define( "ERR_SELECT_UPLOAD", "Please select upload file : " );

 

error_reporting( E_ERROR | E_WARNING | E_PARSE );

?><?php

// --- Array of Form Elements ---

$form_mail[] = array( "name" => "Name", "text" => "Name",  "type" => "text", "required" => "Required" ) ;

$form_mail[] = array( "name" => "Website_address", "text" => "Website address",  "type" => "text", "required" => "Required" ) ;

$form_mail[] = array( "name" => "Reply_addres", "text" => "Reply address",  "type" => "generic email", "required" => "Required" ) ;

$form_mail[] = array( "name" => "Details", "text" => "Details",  "type" => "textarea", "required" => "Required" ) ;

 

// -- Detech Submit & SendMail --

$isHideForm = false;

if( $HTTP_POST_VARS["formmail_submit"] ){

$sErr = checkPass();

if( ! $sErr ){

sendFormMail( $form_mail, "") ;

$isHideForm = true;

 

$redirect = "";

if( strlen(trim($redirect)) ):

header( "Location:$redirect" );

exit;

endif;

}

}

 

 

?>

<?

// ===============================================

function    sendFormMail( $form_mail, $sFileName = ""  )

{

    global    $HTTP_POST_VARS ;

 

$to = $HTTP_POST_VARS["esh_formmail_recipient"]; // I don't detect spam at this moment. it's to do list.

    $from = "online.submit@" . HOST_NAME ;

$subject = $HTTP_POST_VARS["esh_formmail_subject"];

 

// first stage keep it simple:

$sWhatToDo = $sFileName ? "mailandfile" : "" ; //$HTTP_POST_VARS["esh_formmail_mail_and_file"];

 

//$sFileName = $HTTP_POST_VARS["esh_formmail_save_record_file"];

$cc = $HTTP_POST_VARS["esh_formmail_cc"];

$bcc = $HTTP_POST_VARS["esh_formmail_bcc"];

$charset = $HTTP_POST_VARS["esh_formmail_charset"];

 

    for( $i = 0; $i < count( $form_mail ); $i ++ ){

        $value = trim( $HTTP_POST_VARS[ $form_mail[ $i ][ "name" ] ] );

        $content .= $form_mail[ $i ][ "text" ] . " \t : " . $value ."\n";

        $line .= remove_newline( $value ) . "\t" ;

if( strtolower("Sender's email") == strtolower($form_mail[ $i ][ "type" ]) ) {

//print "Type:[" . $form_mail[ $i ][ "type" ] . "] $value <br>\n";

$from = $value ;

}

    };

    $content .= "\n\nIP:" . getEnv( "REMOTE_ADDR" );

 

switch( strtolower($sWhatToDo) ){

case "mailandfile" :

        mailAttachments( $to , $subject , $content,  $from,  $charset, $cc , $bcc ) ;

        if( ! appendToFile( $sFileName, $line ) )

mailReport( $content . "\n\nWrite Form Mail to File Fail." );

break;

 

case "fileonly" :

        if( ! appendToFile( $sFileName, $line ) )

mailReport( $content . "\n\nWrite Form Mail to File Fail.", $from );

break;

 

default :

        mailAttachments( $to , $subject , $content,  $from,  $charset, $cc , $bcc ) ;

}

 

mailAutoResponse( $from ) ;

}

 

 

//------------------------------------------------------------------------------------------

function mailAutoResponse( $to ){

    global    $HTTP_POST_VARS ;

$subject = $HTTP_POST_VARS["esh_formmail_return_subject"];

$responseMsg = $HTTP_POST_VARS["esh_formmail_return_msg"];

if( $to && $responseMsg )

mail( $to, $subject, $responseMsg, "From: " . $HTTP_POST_VARS["esh_formmail_recipient"] );

}

 

 

//------------------------------------------------------------------------------------------

function mailReport( $content = "", $from = "" ){

mail( ADMIN_MAIL, "Error@" . HOST_NAME . PHP_SELF, $content, "From:$from" );

}

 

//------------------------------------------------------------------------------------------

function remove_newline( $str = "" ){

$newliner = "<!--esh_newline-->" ; // replace \r\n with $newliner ;

$newtaber = "<!--esh_newtaber-->" ; // replace \t with $newtaber ;

$str = ereg_replace( "\t", $newtaber, $str );

$str = ereg_replace( "\r\n", $newliner, $str );

return ereg_replace( "\n", $newliner, $str );

}

 

//------------------------------------------------------------------------------------------

function checkPass()

{

global $form_mail ;

global $HTTP_POST_VARS ;

    global    $HTTP_POST_FILES ;

 

for( $i = 0; $i < count( $form_mail ); $i ++ ){

$type = strtolower( $form_mail[ $i ][ "type" ]  );

$value = trim( $HTTP_POST_VARS[ $form_mail[ $i ][ "name" ] ] );

$required = $form_mail[ $i ][ "required" ] ;

$text = stripslashes( $form_mail[ $i ][ "text" ] );

 

// simple check the field has something keyed in.

if( !strlen($value) && (  $required == "Required" ) && $type != "attachment" ) 

return ERR_MISSING . $text  ;

 

// verify the special case

if(

( strlen($value) || $type == "attachment" )

&&  $required == "Required"

):

switch( $type ){

case strtolower("Sender's Name") :

  break;

case strtolower("Generic email"):

case strtolower("Sender's email"):

  if( ! formIsEMail($value) ) return ERR_EMAIL . $text ;

  break;

case "text" :

break;

case "textarea" :

break;

case "checkbox" :

case "radio" :

break;

case "select" :

break;

case "attachment" :

$upload_file = $HTTP_POST_FILES[ $form_mail[ $i ]["name"] ][ "tmp_name" ] ;

if( ! is_uploaded_file($upload_file)  )

return  ERR_SELECT_UPLOAD . $text;

break;

case strtolower("Date(MM-DD-YYYY)"):

break;

case strtolower("Date(MM-YYYY)"):

break;

case strtolower("CreditCard(MM-YYYY)"):

if( $value < date("Y-m") ) return ERR_CREDIT_CARD_EXPIRED  . $text;

break;

case strtolower("CreditCard#"):

if( !formIsCreditNumber( $value )  ) return ERR_CREDIT_CARD_NUMBER  . $text ;

break;

case strtolower("Time(HH:MM:SS)"):

break;

case strtolower("Time(HH:MM)"):

break;

default :

//return $sErrRequired . $form_mail[ $i ][ "text" ];

} // switch

endif;

} // for

 

return "" ;

}

 

 

 

//------------------------------------------------------------------------------------------

function formSelected( $var, $val )

{

    echo ( $var == $val ) ? "selected" : "";

}

 

 

//------------------------------------------------------------------------------------------

function formChecked( $var, $val )

{

    echo ( $var == $val ) ? "checked" : "";

}

 

 

//------------------------------------------------------------------------------------------

function    formIsEMail( $email ){

        return ereg( "^(.+)@(.+)\\.(.+)$", $email );

}

 

 

//------------------------------------------------------------------------------------------

function    selectList( $name, $selectedValue, $start, $end, $prompt = "-Select-", $style = "" )

{

    $tab = "\t" ;

    print "<select name=\"$name\" $style>\n" ;

    print $tab . "<option value=''>$prompt</option>\n" ;

    $nLen = strlen( "$end" ) ;

    $prefix_zero = str_repeat( "0", $nLen );

    for( $i = $start; $i <= $end ; $i ++ ){

        $stri = substr( $prefix_zero . $i, strlen($prefix_zero . $i)-$nLen, $nLen );

        $selected = ( $stri == $selectedValue ) ? " selected " : "" ;

        print $tab . "<option value=\"$stri\" $selected >$stri</option>\n" ;

    }

    print "</select>\n\n" ;

}

 

 

//------------------------------------------------------------------------------------------

// something like CreditCard.pm in perl CPAN

function formIsCreditNumber( $number ) {

   

    $tmp = $number;

    $number = preg_replace( "/[^0-9]/", "", $tmp );

 

    if ( preg_match(  "/[^\d\s]/", $number ) )  return 0;

    if ( strlen($number) < 13  && 0+$number ) return 0; 

 

    for ($i = 0; $i < strlen($number) - 1; $i++) {

        $weight = substr($number, -1 * ($i + 2), 1) * (2 - ($i % 2));

        $sum += (($weight < 10) ? $weight : ($weight - 9));

    }

 

    if ( substr($number, -1) == (10 - $sum % 10) % 10  )  return $number;

    return $number;

}

 

 

// -------------------------- Begin Mail Attachment Functions -----------------------------------------------------------------

function    mailAttachments( $to = "" , $subject = "" , $message = "" , $from = "support@lynx.net" , $charset = "iso-8859-1", $cc = "" , $bcc = "" ){

    global    $HTTP_POST_FILES ;

   

        if( ! strlen( trim( $to ) ) ) return "Missing \"To\" Field." ;

 

        $boundary = "====_My_PHP_Form_Generator_" . md5( uniqid( srand( time() ) ) ) . "===="; 

       

        // setup mail header infomation

        $headers = "From: $from\r\n"; 

        if ($cc) $headers .= "CC: $cc\r\n"; 

        if ($bcc) $headers .= "BCC: $bcc\r\n"; 

$plainHeaders = $headers ; // for no attachments header

        $headers .= "MIME-Version: 1.0\nContent-type: multipart/mixed;\n\tboundary=\"$boundary\"\n"; 

 

        $txtMsg = "\nThis is a multi-part message in MIME format.\n" . 

                        "\n--$boundary\n" .

                        "Content-Type: text/plain;\n\tcharset=\"$charset\"\n\n"  . $message . "\n";

       

        //create mulitipart attachments boundary

        $sError = "" ;

        $nFound = 0;

        foreach( $HTTP_POST_FILES as $aFile ){

                    $sFileName = $aFile[ "tmp_name" ] ;

                    $sFileRealName = $aFile[ "name" ] ;

                    if( is_file( $sFileName ) ):

                       

                        if( $fp = fopen( $sFileName, "rb" ) ) :

                            $sContent = fread( $fp, filesize( $sFileName ) );

                            $sFName = basename( $sFileRealName ) ;

                            $sMIME = getMIMEType( $sFName ) ;

                           

                            $bPlainText = ( $sMIME == "text/plain" ) ;

                            if( $bPlainText ) :

                                $encoding = "" ;

                            else:

                                $encoding = "Content-Transfer-Encoding: base64\n"; 

                                $sContent = chunk_split( base64_encode( $sContent ) ); 

                            endif;

                           

                            $sEncodeBody .=    "\n--$boundary\n" . 

                                                        "Content-Type: $sMIME;\n" . 

                                                        "\tname=\"$sFName\"\n" .

                                                        $encoding . 

                                                        "Content-Disposition: attachment;\n" . 

                                                        "\tfilename=\"$sFName\"\n\n" .

                                                        $sContent . "\n" ;

                            $nFound ++;                                               

                        else:

                            $sError .= "<br>File $sFileName can not open.\n" ;

                        endif; // if( $fp = fopen( $sFileName, "rb" ) ) :

                       

                    else:

                        $sError .= "<br>File $sFileName doesn't exist.\n" ;

                    endif; //if( file_exists( $sFileName ) ):

        }; // end foreach

 

        $sEncodeBody .= "\n\n--$boundary--" ;

        $sSource = $txtMsg . $sEncodeBody ;

 

 

$nFound ? mail( $to, $subject, $sSource, $headers  )

                : mail( $to, $subject, $message, $plainHeaders ); 

 

        return $sError ;       

}

 

/* ---------------------------------------------------------------------------------------------------

    Parameters: $sFileName

    Return :

        1. "" :  no extendsion name, or sFileName is empty

        2. string: MIME Type name of array aMimeType's definition.

  ---------------------------------------------------------------------------------------------------*/

function    getMIMEType( $sFileName = "" ) {

       

        $sFileName = strtolower( trim( $sFileName ) );

        if( ! strlen( $sFileName  ) ) return "";

       

        $aMimeType = array( 

                                        "txt" => "text/plain" ,

                                        "pdf" => "application/pdf" ,

                                        "zip" => "application/x-compressed" ,

 

                                        "html" => "text/html" ,

                                        "htm" => "text/html" ,

 

                                        "avi" => "video/avi" ,

                                        "mpg" => "video/mpeg " ,

                                        "wav" => "audio/wav" ,

 

                                        "jpg" => "image/jpeg " ,

                                        "gif" => "image/gif" ,

                                        "tif" => "image/tiff " ,

                                        "png" => "image/x-png" ,

                                        "bmp" => "image/bmp" 

                                    );

        $aFile = split( "\.", basename( $sFileName ) ) ;

        $nDiminson = count( $aFile ) ;

        $sExt = $aFile[ $nDiminson - 1 ] ; // get last part: like ".tar.zip", return "zip"

       

        return ( $nDiminson > 1 ) ? $aMimeType[ $sExt ] : ""; 

}

// -------------------------- End Mail Attachment Functions -----------------------------------------------------------------

 

 

//------------------------------------------------------------------------------------------

function    appendToFile( $sFileName = "", $line = "" ){

    if( !$sFileName || !$line ) return 0;

    $hFile = fopen( "$sFileName", "a+w" );

    $nBytes = 0;

    if( $hFile ){

        $nBytes = fputs( $hFile , trim($line)."\r\n" );

        fclose( $hFile );

    };

    return $nBytes ;

}

?>

Underneath $headers = "From: $from\r\n";

 

add : $headers .= "Reply-To: " . HtmlSpecialChars( $HTTP_POST_VARS[ "Reply_name" ]. " <" . HtmlSpecialChars( $HTTP_POST_VARS[ "Reply_addres" ] ) . ">\r\n";

 

Change your POST_VARS to the correct $vars_names your using

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.