【问题标题】:Sending email from html form using php [duplicate]使用php从html表单发送电子邮件[重复]
【发布时间】:2016-08-21 08:29:48
【问题描述】:

我一整天都在尝试这个,但我不知道如何从我的 html 联系表单中发送一封电子邮件,其中包含表单中的信息到我的电子邮件地址。我是 php 新手。

我尝试通过将其上传到免费的网络托管来运行它。我收到消息“成功!”当我按下我的 html 表单上的提交按钮但实际上没有发送电子邮件时。

感谢任何帮助。

PHP 脚本:

<?php

//Subject
$subject ="Contact Form Submission";

// Name
$name =$_POST['InputName'];

// Message
$message =$_POST['InputMessage'];

//Mail of Sender
$email =$_POST['InputEmail'];

//From
$header = "From:$name<$email>";

$send_contact=mail("myemail@gmail.com",$subject,$message,$header);

//Check if mail was sent
if($send_contact){
echo "Success!";
}
else {
echo "Error!";
}
?>

编辑:经过一整天的反复试验后弄清楚了。问题出在我使用的免费网络主机上。更改了主机,代码开始正常工作。希望这对将来的某人有所帮助。谢谢大家的帮助。

【问题讨论】:

  • 你还没弄明白?
  • @Bisquitue 仍在努力解决

标签: php html forms email


【解决方案1】:

我很清楚为什么您的代码不起作用。很久以前发生在我身上。您的代码不起作用的原因是:

  • 当您在标头中传递“发件人”时,php 需要您的现有电子邮件帐户
    服务器。 例如: $headers = 'From: emailacc@yourserver.com';
  • 所以您要做的第一件事就是在您的服务器上创建一个电子邮件帐户。然后将From 中的header 放入您刚刚创建的电子邮件地址。
  • $headers 中的From 字段不是您想象的From
  • &lt;?php
  • $email = $_POST["InputEmail"];
  • $subject = $_POST["InputSubject"];
  • $message = "From: ".$email.", ".$_POST["InputMessage"]; // 您将输入表单中的电子邮件地址放在这里
  • $headers = 'From: emailacc@yourserver.com'; // 这是您指定的电子邮件地址,您要从该地址发送电子邮件。(即您的服务器电子邮件地址)
  • mail($to, $subject, $message, $headers)
  • ?&gt;

我相信这会完成这项工作:)

【讨论】:

  • 嗨!你的解释很有道理。我完全复制了你说的。使用我的免费网络托管服务提供商创建了一个电子邮件帐户。我测试了脚本,但仍然没有发送电子邮件。但问题是我可以从 emailacc@myserver.com 向我的 gmail 地址发送一封电子邮件,但不能从我的 php 脚本发送电子邮件。有什么想法吗?
  • 做一个小测试:首先在使用表单值之前测试这个(使用字符串):` $email="anymail@gmail.com"; $to = "youremail@gmail.com"; $subject = "测试对象"; $message="测试消息"; $headers = '来自:emailacc@yourserver.com';邮件($to,$subject,$message,$headers); ` 不要更改以上任何内容。只需复制并粘贴并仅将 $to 变量替换为您的 gmail 帐户和 emailacc@yourserver.com。如果可行,那么问题在您的 php 脚本中得到解决。
  • 好的,我刚刚复制并粘贴了您所说的内容,但仍然没有发送电子邮件。用我使用的 PHP 脚本和 HTML 表单代码更新了我的第一篇文章。我真的不知道这里出了什么问题。
  • 好的,看,here 我有 gmail:pawansharma3303@gmail.com 和服务器邮件地址:info@botsystems.in 这个脚本有效
  • 我有完全相同的东西,但它不适合我,我不知道为什么。我正在使用 000webhost。我会成为他们这边的问题吗?
【解决方案2】:

试一试。

我稍微改变了你的 $header 变量,这样它就不会将电子邮件设置为 "$email",它实际上会通过在表格中输入的张贴电子邮件。这也适用于名称。

我还这样做是为了让您通过if 语句的参数传递邮件函数,而不是设置一个新变量。

$headers = "From: " . $name . "<" . $email . ">"; // notice new concatenation

if(mail("myemail@gmail.com", "Contact Form Submission", $message, $headers)){
    // success message
} else {
    // error message
}

真的希望这会有所帮助! :)

【讨论】:

  • 您好,我已对其进行了测试,但不幸的是,它似乎仍然无法正常工作。您还有其他建议吗?
【解决方案3】:

尝试在可能是问题的“=”之后添加空格,

如果这不起作用,您可以尝试使用它

 <?php
     $emailvariable = $_POST['InputEmail']


    $to      = 'example@gmail.com';
    $subject = "Form"
    $message = $_POST['InputMessage'];
    $headers = "From: $emailvariable";

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

希望对你有帮助

【讨论】:

  • 我尝试使用您的解决方案,但仍然没有发送电子邮件。我似乎真的无法弄清楚问题所在。
  • 您是否使用域等托管您的网站。因为如果不是,您将无法使用邮件服务器发送邮件。因此,使用 wamp 或 mamp 您无法做到这一点,如果您将其托管在网站上,请尝试从 $_POST['InputEmail'] 中删除大写字母
  • 是的,我使用免费的虚拟主机将其托管在具有域名的网站上。你的意思是像 $_post['inputemail'] 吗?
  • 是的,否则尝试将消息更改为某种类型的字符串,例如“messagegoeshere”,然后对 $headers = “From: mail@example.com”执行相同操作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
相关资源
最近更新 更多