0

我在 Google 和 Youtube 上搜索过这个答案,但没有找到答案。

我在我的网站上创建了一个非常简单的联系表格。

http://www.torontoimc.com/contact

我附加了一个单独的 PHP 文件来处理联系表单元素。

当有人通过我网站上的表格向我发送询问时,我会收到除此人的电子邮件地址输入部分信息之外的所有信息。

收到该电子邮件地址非常重要,否则我将无法回复发送给我的电子邮件地址。

我尝试将表单设置为发送到我的 gmail 和 Outlook 电子邮件,但它只是将其发送为:

它只是将发件人的电子邮件地址显示为一些随机名称“@hemi.websitewelcome.com”

我不确定这是服务器端问题还是 PHP 文件问题。

我已经附上了我的联系表格和 PHP 文件的代码。

这是联系表格代码:

    <form action="formprocess.php" method="post" name="contact">
    <fieldset>

    <label>First Name</label>
    <input name="first_name" type="text"/>

    <label>Last Name</label>
    <input name="last_name" type="text"/>


    <label>Email</label>
    <input name="email_add" type="text"/>


    <label>Please write your inquiry below.</label>

    <textarea name="message" rows="15" cols="40">
    </textarea>

    <input type="submit" name="submit" id="submit" value="Submit"/>


    <input type="reset" name="reset" id="reset" value="Reset"/>


    </fieldset>

    </form>

这是php代码:

    <?php

    $first_name = $_POST['first_name'];

    $last_name = $_POST['last_name'];

    $email_add = $_POST['email_add'];

    $message = $_POST['message'];

    $to = "torontoimc@gmail.com";

    $subject = "Inquiry for TorontoIMC";

    mail ($to, $subject, $message, "From: " . $first_name . $last_name . $email_add);

   header('Location: thanks.html');
   exit();

   ?>

如果这是一个重复的问题,我深表歉意,但我是 php 的新手并且还没有真正找到答案,如果有人可以帮助我,我将不胜感激。

谢谢,

拉蒂什·沃拉

4

2 回答 2

2

尝试这个:

$headers = "From: $first_name $last_name <$email_add>\r\n";
mail ($to, $subject, $message, $headers );

我将“\r\n”添加到 From

于 2013-07-22T16:09:25.607 回答
0

我了解您FROM在线尝试执行的操作,但您应该使用“真实”的 FROM 发件人。许多服务器不允许您使用FROM来自不是主机的域的线路(想想看,事实是您在撒谎,填写表格的人实际上并没有发送该电子邮件)。

其次,按照 user4035 在 中设置电子邮件样式的方式FROM,如果您要使用 a name last name <email>,它可能不仅是正常练习的方式,也可能是您编写它的方式,加入没有空格的字段,您最终可能会出现FROM这样的一行,FrançoisMARTIN MELLIERfmartinm@gmail.com其中可能包含非法字符和/或空格,可能导致某些服务器阻塞或丢弃。反而'FROM: '. $first_name . ' '. $last_name. ' <'. $email_add. '>'会产生FROM: François Martin Mellier <fmartinm@gmail.com>. 但同样,您应该使用来自您发送的同一域的真实帐户(可能类似于'FROM: New enquiry <info@torontoimc.com>'?)。正如已经指出的那样,email_add在消息正文或主题行中包含该字段以便接收它;这些是适当的地方。

使用-f指出的 mti2935 之类的参数总是一个好主意,但前提是该电子邮件计数与服务器属于同一域。

作为旁注,请尝试将错误考虑在内,至少:

if (mail ($to, $subject, $message, $headers )) {
 header('Location: thanks.html');
} else {
 header('Location: error.html');
}

可能会有很长的路要走。

于 2013-07-22T20:48:26.773 回答