1

从表单发送邮件时出现错误

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

警告:mail() [function.mail]:SMTP 服务器响应:第 9 行 C:\xampp\xampp\htdocs\send.php 中的 550 ACCESS DENIED

消息传递失败...

这是代码

邮件.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>");
 }
?>
4

5 回答 5

1

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

顺便说一句:Xampp 捆绑了水星 smtp 服务器。在其默认配置中,它接受来自本地 php 脚本的电子邮件。但是您必须配置 mecury以将电子邮件中继到另一个 MTA。

于 2009-12-26T19:20:00.273 回答
0

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

于 2009-12-26T19:14:18.210 回答
0

如果您希望使用身份验证,则需要安装此PEAR 模块,因为 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>");
 }
?>
于 2009-12-26T19:17:21.947 回答
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 等服务发送电子邮件。

于 2009-12-26T19:23:41.217 回答
0

正如 VolkerK 指出的那样 - 使用 Swiftmail,它是独立的,不需要 SMTP 服务器。我在 Mercury + xampp 上使用了两天,但无法正常工作。

此链接中的第一个示例立即生效:

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

于 2012-09-23T18:23:14.403 回答