【问题标题】:Sending Email from server PHP [duplicate]从服务器PHP发送电子邮件[重复]
【发布时间】:2017-01-02 07:19:59
【问题描述】:

我在 html 文件中有一个表单,当用户填写表单并提交时,我试图在我的 gmail 帐户上接收电子邮件。我的网站在服务器上而不是在本地主机上运行。我的代码没有错误但仍然没有收到电子邮件。我不知道为什么?谁能给我示例代码或告诉我我做错了什么? .. 提前致谢 ... 这是我的代码

<form id="main-contact-form" name="contact-form" method="post" action="sendemail.php">
    <div class="row  wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms">
      <div class="col-sm-6">
        <div class="form-group">
          <input type="text" name="name" class="form-control" placeholder="Name" required="required">
        </div>
      </div>
      <div class="col-sm-6">
        <div class="form-group">
          <input type="email" name="email" class="form-control" placeholder="Email Address" required="required">
        </div>
      </div>
    </div>
    <div class="form-group">
      <input type="text" name="subject" class="form-control" placeholder="Subject" required="required">
    </div>
    <div class="form-group">
      <textarea name="message" id="message" class="form-control" rows="4" placeholder="Enter your message" required="required"></textarea>
    </div>                        
    <div class="form-group">
      <button type="submit" class="btn-submit">Send Now</button>
    </div>
</form>   

sendemail.php 是

<?php 
$name = @trim(stripslashes($_POST['name']));
$from       = @trim(stripslashes($_POST['email'])); 
$subject    = @trim(stripslashes($_POST['subject'])); 
$message    = @trim(stripslashes($_POST['message'])); 
$to         = 'khurram.ansar@gmail.com';

$headers   = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: {$name} <{$from}>";
$headers[] = "Reply-To: <{$from}>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();

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

die; 

【问题讨论】:

  • var_dump(mail($to, $subject, $message, $headers));的输出是什么
  • 邮件有用吗?试试mail('khurram.ansar@gmail.com','test','test'); - Brucie Alpha
  • 你连接到一个邮件服务器吧?您使用的主机是什么?
  • mail() 函数要求 $headers 是一个字符串,而不是一个数组。
  • 请在更正标题后检查您的垃圾邮件文件夹中的邮件。因为 gmail 会将来自未知服务器的邮件放入垃圾邮件中。

标签: php sendmail forms http-post


【解决方案1】:

根据documentation

用 CRLF (\r\n) 分隔多个额外的标头。

所以你的 php 文件应该是这样的:

<?php
$name = @trim(stripslashes($_POST['name']));
$from = @trim(stripslashes($_POST['email']));
$subject = @trim(stripslashes($_POST['subject']));
$message = @trim(stripslashes($_POST['message']));
$to = 'khurram.ansar@gmail.com';

$headers = "MIME-Version: 1.0" . "\r\n" .
        "Content-type: text/plain; charset=iso-8859-1" . "\r\n" .
        "From: {$name} <{$from}>" . "\r\n" .
        "Reply-To: <{$from}>" . "\r\n" .
        "Subject: {$subject}" . "\r\n" .
        "X-Mailer: PHP/" . phpversion();

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

die;
?>

【讨论】:

    猜你喜欢
    • 2020-11-19
    • 1970-01-01
    • 2013-12-19
    • 2014-09-08
    • 2021-10-01
    • 2015-09-10
    • 2014-09-04
    相关资源
    最近更新 更多