2014-01-15 47 views
0

你好,我正在装箱一个简单的PHP邮件应用程序。为此,我为Send To:input和Subject:input创建了一个HTML表单。现在我想要打开一个HTML文件并发送到接收的消息。当我填写index.php上的Send TO和Subject输入字段并提交时,没有错误,只是html文件显示在下一页,但没有MAILS通过。PHP邮件发送文件.html

我在localhost上工作。

HTML文件:

<html> 
<head></head> 

<body> 

<h2>Mail</h2> 

<form name="form1" method="post" action="mail.php"> 
    Send To: <input type="text" id="recipient" name="recipient"> 
    <br> 
    Subject: <input type="text" id="subject" name="subject"> 
    <br> 
    <input type="submit" value="Send"> 

</form> 

</body> 

</html> 

PHP文件:

<?php 

$to = $_POST['recipient']; 
$subject = $_POST['subject']; 
$message = readfile("welcome.html","r") or exit ("Unable to open file"); 
fclose($message); 


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

?> 

可能有人提出一个解决方案或直接我对这种话题的阅读来源。

+0

在这个过程的哪个阶段会发生故障?代码中有错误吗? SMTP服务器有错误吗?如果您在测试SMTP服务器上指出这一点,它是否能够按预期成功接收邮件?有很多事情可以阻止电子邮件在您的个人收件箱中显示,并且很少有任何事情与代码有关。 – David

+0

你有没有试过用单个字符或单词发送一封简单的旧电子邮件?如果这不起作用,您的问题不是发送文件的内容,而是发送任何内容。如果你在本地主机上工作,这很有可能是你的问题。 –

+0

你有没有试过在使用简单的文本之前尝试读取文件等一旦那工作,然后你可以进步? –

回答

0

如果你在本地主机上工作,你的网络盒子可能会阻塞对应于smtp邮件端口的端口25。

您应该配置您的盒子才能打开它,或者在不受此配置问题影响的服务器上进行测试。

+0

没错实际上我觉得这个问题是与本地主机你怎么和我应该在哪里配置ini.php允许带外邮件 – Tomazi

+0

这不是在任何ini.php,它在你的互联网盒的配置。例如,在法国,我有一个“livebox”,当我在我的网络浏览器中键入“livebox”时,我可以访问其配置。这是阻止你的邮件的互联网盒,这不是一个PHP的问题。 –

0

您错过了Content-Type标题可将消息设置为HTML。另外,如果您正在使用本地计算机,则需要设置SMTP服务器来发送电子邮件。

$to = $_POST['recipient']; 
$subject = $_POST['subject']; 
$message = readfile("welcome.html","r") or exit ("Unable to open file"); 

$headers = "Content-type: text/html\r\n"; 

fclose($message); 


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

确定这个作品,但相反的HTML内容我得到一个数字整数不是内容任何想法我可以修复它 – Tomazi

0

其他人已经帮助你找出你的发送问题,但正如我在我的评论中指出的那样,你正在使用错误的文件阅读功能。您应该使用file_get_contents来代替,因为它实际上会返回一个包含文件内容的字符串,而您当前的解决方案将返回一个表示读取的字节数的整数。请访问http://us3.php.net/manual/en/function.file-get-contents.php以了解更多信息。