使用php无法发送电子邮件

时间:2015-07-21 09:01:19

标签: php html forms email

我正在尝试使用php发送电子邮件并尝试使用php字符串定义to和from标头。

HTML:

<form action="send_email.php" name="form">

From Email:<br>
<input type="text" name="post4">
<br><br>
To Email:<br>
<input type="text" name="post1">
<br><br>
Subject:<br>
<input type="text" name="post2">
<br><br>
Body:<br>
<textarea name="post3" form="form">Enter Message Body</textarea> 
<br><br>
<input type="submit" value="Submit">
</form> 

PHP:

<?php
session_start();

$post1 = $_POST['post1'];
$post2 = $_POST['post2'];
$post3 = $_POST['post3'];
$post4 = $_POST['post4'];


$to      = '$post1';
$subject = '$post2';
$message = '$post3';
$headers = 'From: $post4' . "\r\n" .
    'Reply-To: $post4' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

echo 'done';

?> 

我无法弄清楚当我在带有心脏互联网的托管服务器上运行脚本时,我没有收到电子邮件。

有人可以告诉我哪里出错了吗?感谢

6 个答案:

答案 0 :(得分:0)

试试此代码

<?php
session_start();

$post1 = $_POST['post1'];
$post2 = $_POST['post2'];
$post3 = $_POST['post3'];
$post4 = $_POST['post4'];


$to      = $post1;
$subject = $post2;
$message = $post3;
$headers = 'From: '.$post4. "\r\n" .
    'Reply-To:'. $post4 . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

echo 'done';

?>

AND HTML

<form action="send_email.php" method="post" name="form">

From Email:<br>
<input type="text" name="post4">
<br><br>
To Email:<br>
<input type="text" name="post1">
<br><br>
Subject:<br>
<input type="text" name="post2">
<br><br>
Body:<br>
<textarea name="post3" form="form">Enter Message Body</textarea> 
<br><br>
<input type="submit" value="Submit">
</form> 

答案 1 :(得分:0)

这里的问题可能不在PHP中。

您的表单需要一种方法。默认情况下,表单通过URL中的GET参数提交数据,这些参数在PHP中,在这种情况下,将转到例如$_GET['post1']。我建议将method='post'作为属性添加到<form>作为第一步,因为您所指的所有$_POST变量当前都不包含任何内容,如果是准确复制/粘贴HTML表单代码。

答案 2 :(得分:0)

不能在单引号内使用PHP变量:'$var'将字面上返回'$ var'。但是,"$var"将返回值为$var的字符串。因此,您必须使用:

$to      = $post1; // or $to = "$post1";
$subject = $post2; // ''
$message = $post3; // ''
$headers = "From: $post4" . "\r\n" .
    "Reply-To: $post4" . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

您可以通过合并字符串“From ...”和“\ r \ n”来清理代码。

答案 3 :(得分:0)

请试试这个

<?php
session_start();

$post1 = $_POST['post1'];
$post2 = $_POST['post2'];
$post3 = $_POST['post3'];
$post4 = $_POST['post4'];


$to      = '$post1';
$subject = '$post2';
$message = '$post3';

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; // Or use "Content-type:text/plain;charset=UTF-8" . "\r\n";

$headers.= 'From: $post4' . "\r\n" .
    'Reply-To: $post4' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

echo 'done';

?> 

答案 4 :(得分:0)

首先安装PEAR包然后添加以下代码

include('Mail.php');

$recipients = $_POST['post2'];

$headers['From']    = $_POST['1'];
$headers['To']      = $_POST['2'];
$headers['Subject'] = 'Test message';

$body = 'Test message';

$params['sendmail_path'] = '/usr/lib/sendmail';

$mail_object =& Mail::factory('sendmail', $params);

$mail_object->send($recipients, $headers, $body);

使用Google SMTP端口号465

答案 5 :(得分:0)

试试这个(适用于我的目的):

<?php
session_start();

$email = htmlspecialchars($_POST['post1']);
$subject = htmlspecialchars($_POST['post2']);
$message = htmlspecialchars($_POST['post3']);
$from = htmlspecialchars($_POST['post4']);

$headers = "From: <$from> $from\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$ok = @mail($email, $subject, $message, $headers, "-f" . $from);   

echo 'done';
?>

<form action="send_email.php" method="post" name="form">

From Email:<br>
<input type="text" name="post4">
<br><br>
To Email:<br>
<input type="text" name="post1">
<br><br>
Subject:<br>
<input type="text" name="post2">
<br><br>
Body:<br>
<textarea name="post3" form="form">Enter Message Body</textarea> 
<br><br>
<input type="submit" method="post" value="Submit">
</form>