PHP Mail() 函数在反馈表单中注入带有"from"地址的"@cp-in-3.webhostbox.net"



我在通过反馈表发送邮件时遇到了很多问题。首先,该函数在本地主机上发送邮件。但在上传到远程服务器后,它停止了发送。不管怎样,我修好了。现在它正在发送邮件,但是向"FROM"地址注入了更多的字符串。请看看我写的代码,这是我收到电子邮件后得到的。

代码= = = =>

<?php
    function putinplace($string=NULL, $put=NULL, $position=false)
    {
        $d1=$d2=$i=false;
        $d=array(strlen($string), strlen($put));
        if($position > $d[0]) $position=$d[0];
        for($i=$d[0]; $i >= $position; $i--) $string[$i+$d[1]]=$string[$i];
        for($i=0; $i<$d[1]; $i++) $string[$position+$i]=$put[$i];
        return $string;
    }
    $from1 = $_POST["email"];
    $from = preg_replace('/[^a-zA-Z0-9@.]/', ' ', $from1);
    $at_pos = strpos($from, "@");
    $from = putinplace($from, "\", $at_pos);
    $subject1 = $_POST["subject"];
    $subject = preg_replace('/[^a-zA-Z0-9']/', ' ', $subject1);
    $message1 = $_POST["body"];
    $message = preg_replace('/[^a-zA-Z0-9']/', ' ', $message1);
    $to = "emailidtosend@gmail.com";
    $headers = 'MIME-Version: 1.0' . "rn";
    $headers = 'From: abc.co.in' . "rn". 'Reply-To: emailidtosend@gmail.com' . "rn" .'X-Mailer: PHP/' . phpversion();
    $headers .= 'Content-type : text/html; CHARSET=ISO-8859-1' . "rn";
    $headers = "From:" . $from . "rn";
    if(mail($to,$subject,$message,$headers)){
        echo "<script>alert('Email Sent Successfully. We will Get back to you Very soon.');</script>";
        echo "<script>window.open('contact-us.php', '_self');</script>";
    }else{
        echo "<script>alert('Unable To Send The Email.');</script>";
        echo "<script>window.open('contact-us.php', '_self');</script>";
    }
?>

和输出= = =>

username@gmail.com@cp-in-3.webhostbox.net(查看"FROM"地址的最后一部分)

You do not need to put  via cp-in-9.webhostbox.net 
You need to configure you php.ini file in your web server.
Step 1. Find php.ini file
If it's not there then create one in home directory and add codes below
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
;sendmail_from = me@example.com
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = /usr/sbin/sendmail
this path "/usr/sbin/sendmail" is specific to server.
To get yours just create a php file with code 
<?php
phpinfo();
?>
and hit that file from web browser you will get the path value for key sendmail_path
One small and simple example for sending email in php is as :
<?php
// Set up parameters
$to = "Vivek.kumar@xyz.com";
$subject = "Your password";
$message = "<p>Hello Homer,</p>
<p>Thanks for registering.</p>
<p>Your password is: <b>springfield</b></p>
";
$from = "vivek@domainname.com";
$headers = "MIME-Version: 1.0" . "n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "n";
$headers .= "From: $from" . "n";
// Send email
mail($to,$subject,$message,$headers);
// Inform the user
echo "Thanks for registering! We have just sent you an email with your password.";
?>

最新更新