sendmail()php的帮助

时间:2009-12-26 19:12:18

标签: php xampp sendmail

从表单发送邮件时收到错误

无法连接到“mail.yoursite.com”端口25的邮件服务器,验证php.ini中的“SMTP”和“smtp_port”设置,或者使用C:\ xampp \ xampp \ htdocs \ send中的ini_set()。第8行的PHP

警告:mail()[function.mail]:SMTP服务器响应:第9行的C:\ xampp \ xampp \ htdocs \ send.php中有550次访问被拒绝

邮件传递失败......

这是代码

mail.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form action="send.php" action="POST">
Enter Name : <input type="text" name="name" />
Enter E-Mail : <input type="text" name="email" />

Enter Subject: <input type="text" name="subject" />

Enter Message: <input type="text" name="mess" />

<input type="submit" name="Submit" />
</form>
<?php

?>



</body>
</html>

send.php

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$body = $_POST['subject'];
$message=$_POST['message'];
//ini_set("sendmail_from","name@yoursite.com");
//ini_set("SMTP","mail.yoursite.com");
mail("name@yoursite.com", $name, $message, "From :$from");
if (mail('nishantmshah@gmail.com', $name, $body, $message, "From :$from")) {
  echo("<p>Message successfully sent!</p>");
 } else {
  echo("<p>Message delivery failed...</p>");
 }
?>

5 个答案:

答案 0 :(得分:1)

你正在使用win32版本的php及其smtp实现的mail()。这是一个小小的MTA,无法进行任何类型的身份验证。如果您尝试将电子邮件转发到的smtp服务器要求您验证mail()将失败 使用(和配置)sendmail for win32。或者实现身份验证的邮件程序类/库,例如SwiftMailer

btw:Xampp捆绑了水银smtp服务器。在其默认配置中,它接受来自本地php脚本的电子邮件。但是你必须configure mecury将电子邮件转发给另一个MTA。

答案 1 :(得分:0)

消息SMTP server response: 550 ACCESS DENIED向我建议您应该再次检查该服务器的凭据。您的用户名或密码可能不正确。

答案 2 :(得分:0)

如果您希望使用身份验证,则需要安装此PEAR Module,因为PHP的邮件功能中未提供身份验证。

使用SMTP身份验证从PHP发送邮件 - 示例

<?php
require_once "Mail.php";

$from = "Sandra Sender <sender@example.com>";
$to = "Ramona Recipient <recipient@example.com>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";

$host = "mail.example.com";
$username = "smtp_username";
$password = "smtp_password";

$headers = array ('From' => $from,
  'To' => $to,
  'Subject' => $subject);
$smtp = Mail::factory('smtp',
  array ('host' => $host,
    'auth' => true,
    'username' => $username,
    'password' => $password));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
  echo("<p>" . $mail->getMessage() . "</p>");
 } else {
  echo("<p>Message successfully sent!</p>");
 }
?>

答案 3 :(得分:0)

基本上,如果你在托管服务器上,那么发送带有php的电子邮件就像喝冷水一样容易。

if(mail('to@bla.bla','subject','content here i include sometime var_export($var,1)'))
 echo 'email send succefull';
else
  echo 'emaiol coudnt be send';

如果你从本地机器发送这个,这将大多失败,因为大多数服务器拒绝这样的请求。 然后,您必须使用外部库从gmail等服务发送电子邮件。

答案 4 :(得分:0)

正如VolkerK指出的那样 - 使用Swiftmail,它的自包含,不需要SMTP服务器。我用Mercury + xampp两天,无法使它工作。

此链接中的第一个示例立即起作用:

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