通过PHP的联系表单通过电子邮件信息发送

时间:2013-02-04 03:17:28

标签: php forms email contact feedback

首先,我想说我只是一个非常新手的PHP。

我有这个简单的PHP,因为它现在,当它发送信息时,它显示一个可怕的“Ok”消息。

你可以帮我改进这个PHP: 更好的代码(可以吗?可能更好吗?) - 我想添加一个更好的答案(比如在一个盒子或类似的东西中),以便建议用户他的消息已被发送。

另一件事是我不确定这是否有效。我安装了xampp,并且本地无法正常工作。我还尝试完成表格,上传到服务器的所有文件,我还在等待......邮件的奇迹到达我的收件箱? = S也许我做错了什么?

<?php
if(isset($_POST["nombre"]) && isset($_POST["email"]) && isset($_POST["consulta"])){
$mymail = "myemail@gmail.com";
$subject = "Consulta";
$contenido = ":: Nombre: ". $_POST["nombre"]."\n";
$contenido .= ":: E-mail: ". $_POST["email"]."\n";
$contenido .= ":: Escribiò el siguiente mensaje: ". $_POST["consulta"]."\n";

$header = "From:".$_POST["email"]."\n"; 

mail($mymail, $subject, utf8_decode($contenido));*/
echo "&estatus=ok&";
}?>

提前感谢您的帮助! 的问候,

3 个答案:

答案 0 :(得分:0)

好的,所以你的代码看起来很好,如果你想改变消息,你应该改变echo语句中的文本。比如echo "Some fancy html in here";。关于邮件没有收到的第二个问题可能是因为php依赖于本地smtp服务器默认发送邮件,这在windows上是不存在的,所以如果你有xampp可能并且在Linux上根本不发送它它可能正在发送它的变量及其进入垃圾邮件文件夹,或者可能根本不发送它。如果您想使用第三方smtp服务器(例如您的gmail)仅用于测试目的,最好和最简单的方法是使用一些库,例如:

http://swiftmailer.org/docs/sending.html

并定义第三方smtp详细信息。

示例代码:

 require_once 'lib/swift_required.php';

// Create the Transport
$transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25)
  ->setUsername('your username')
  ->setPassword('your password')
  ;

/*
You could alternatively use a different transport such as Sendmail or Mail:

// Sendmail
$transport = Swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs');

// Mail
$transport = Swift_MailTransport::newInstance();
*/

// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

// Create a message
$message = Swift_Message::newInstance('Wonderful Subject')
  ->setFrom(array('john@doe.com' => 'John Doe'))
  ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
  ->setBody('Here is the message itself')
  ;

// Send the message
$result = $mailer->send($message);
我认为

非常简单,您还可以添加:

if($result){ echo "Message has been sent"; }else{ echo "Error!"; }

在最后。那应该是诀窍......

顺便说一下gmail的设置是:

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl');

并相应地使用您的Gmail电子邮件和密码作为用户名和密码......

答案 1 :(得分:0)

在理解PHP和邮件功能方面,这个Link是一个相当不错的资源(一般来说就是PHP /网页编码的网站。) 您向用户发出的消息是在最后一行显示echo“&amp; status = ok&amp;”; Echo是将文本输出到页面的功能。如果你知道html,你可以输出你想要的任何html。

echo "<b>This success message is in BOLD</b>";

但是你需要小心引号,因为你需要Escape它们以及其他一些特殊字符,例如

echo "This \"code\" will\nprint like \\\"this\\\"";

看起来像

This "code" will
print like \"this\"

无论如何,这正在切断。至于你的xampp,你必须配置你的smtp设置。看看这个Post

如果您的问题得到解答,请告诉我们。)

答案 2 :(得分:0)

这是一个很大的问题。

首先,您希望在本地进行测试,并使用简单的邮件客户端检查您的邮件传输代理是否会向本地帐户发送电子邮件。没有PHP

然后再次发送邮件到远程电子邮件帐户(gmail)没有php

然后让你的PHP在本地发送。

最后尝试从php发送远程电子邮件。

您的脚本需要从输入表单验证输入参数,以避免发送垃圾邮件,例如为初学者阅读www.w3schools.com

例如代码,下载并查看一些成熟的代码,如Drupal或Wordpress,看看他们是如何做到的。由于发送电子邮件最终取决于您的传输代理和远程端(SSL,TLS),这可能需要密钥验证才能允许接收邮件进行中继。

Stack Exchange上也有很多参考和示例。你需要自己做一些研究。