-1

我有一个利用 PHP Mail() 函数的 HTML 表单。我使用的 SMTP 服务器是 localhost,不需要身份验证。

<form action="../../Scripts/fused.php" method="POST"><p>Name</p> <input type="text" name="name">
<p>Email</p> <input type="text" name="email">
<p>Phone</p> <input type="text" name="phone">

<p>Request Phone Call:</p>
Yes:<input type="checkbox" value="Yes" name="call"><br />
No:<input type="checkbox" value="No" name="call"><br />

<p>Website</p> <input type="text" name="website">

<p>Message</p><textarea name="message" rows="6" cols="25"></textarea><br />
<input type="submit" value="Send"><input type="reset" value="Clear">
</form>

这是php文件:

<?php

$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$call = $_POST['call'];
$website = $_POST['website'];
$message = $_POST['message'];
$formcontent = 'From: $name \n Phone: $phone \n Call Back: $call \n Website: $website \n Message: $message';
$recipient = 'hr@example.com';
$subject = 'Fused Enterprises Contact Form';

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= 'From: <hr@example.com>' . "\r\n";
$headers .= 'Cc: dev@example.com' . "\r\n";

mail($recipient, $subject, $formcontent, $headers) or die("Error!");

echo "Thank You, the form has been submitted. Someone from the Team will contact you shortly." . " -" . "<a href='/Home/' style='text-decoration:none;    color:#1e90ff;'> Return Home</a>";

?>

我必须实施 PEAR Mail 吗?我也尝试过实现这一点,但我没有收到电子邮件。我不知道它是否失败。脚本运行,我得到了echo,但我从来没有收到电子邮件。它没有进入垃圾邮件文件夹。

该站点(连同此脚本)托管在 下example.com,但电子邮件使用 localhost 和 smtp 服务器mail.example.com。它们托管在同一台服务器上。域名的差异可能是个问题吗?

4

2 回答 2

1

要以 HTML 格式发送邮件,Header 是最重要的。使用这个 php 函数.. 我在这里使用这个脚本... http://ieeeaset.com/mailer/mailer.php

function htmlmail()
    {
        if (strtoupper(substr(PHP_OS,0,3)=='WIN')) { 
            $eol="\r\n"; 
        } elseif (strtoupper(substr(PHP_OS,0,3)=='MAC')) { 
            $eol="\r"; 
        } else { 
            $eol="\n"; 
        }
        $recmail = $_POST['toemail']; // address where you want the mail to be send
        $sub = $_POST['subject']; //subject of email that is sent
        $mess = $_POST['message'];
        $pattern[0]="\'";
        $pattern[1]='\"';
        $replace[0]="'";
        $replace[1]='"';
        $mess=  str_replace($pattern, $replace, $mess);
        $headers = "From: [senders_email].$eol . 
        "MIME-Version: 1.0".$eol .
        "Content-type: text/html; charset=iso-8859-1";
            mail($recmail,$sub,$mess,$headers);
    }
于 2013-03-05T19:57:26.690 回答
0

一些主机关闭了他们的服务器发送电子邮件的能力(因此不可能从他们的服务器发送垃圾邮件)。我会首先检查一下。

于 2013-03-05T19:55:43.040 回答