我试图从 PHP 页面,请发送电子邮件通过 GMail 的 SMTP 服务器,但是收到此错误︰

身份验证失败 [SMTP: SMTP 服务器会不支持身份验证 (代码︰ 250,响应︰ 在您的服务,[98.117.99.235] 的 mx.google.com 大小 35651584 8BITMIME STARTTLS ENHANCEDSTATUSCODES 管道)]

任何人都可以帮助吗?这是我的代码︰

<?php
require_once "Mail.php";

$from = "Sandra Sender <sender@example.com>";
$to = "Ramona Recipient <ramona@microsoft.com>";
$subject = "Hi!";
$body = "Hi,

How are you?";

$host = "smtp.gmail.com";
$port = "587";
$username = "testtest@gmail.com";
$password = "testtest";

$headers = array ('From' => $from,
  'To' => $to,
  'Subject' => $subject);
$smtp = Mail::factory('smtp',
  array ('host' => $host,
    'port' => $port,
    '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-04-03 02:47:59
问题评论:

回答:

// Pear Mail Library
require_once "Mail.php";

$from = '<fromaddress@gmail.com>';
$to = '<toaddress@yahoo.com>';
$subject = 'Hi!';
$body = "Hi,

How are you?";

$headers = array(
    'From' => $from,
    'To' => $to,
    'Subject' => $subject
);

$smtp = Mail::factory('smtp', array(
        'host' => 'ssl://smtp.gmail.com',
        'port' => '465',
        'auth' => true,
        'username' => 'johndoe@gmail.com',
        'password' => 'passwordxxx'
    ));

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

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

什么是Mail.php从哪里获得从该文件?

他使用梨树邮包.

可能任何人请给我一个链接,我可以从哪里获得的 Mail.php 文件。因为我已尝试使用它,并且它将不能工作,谢谢

其中是 @ 符号在这上面的示例?我看不到一条在那里 !

我相信该 myaccount.gmail.com 是 myaccount@gmail.com 中的电子邮件标准相同。

它使用Swift 的邮件程序,可以很容易地通过发送邮件 Gmail 凭据︰

<?php
require_once 'swift/lib/swift_required.php';

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")
  ->setUsername('GMAIL_USERNAME')
  ->setPassword('GMAIL_PASSWORD');

$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance('Test Subject')
  ->setFrom(array('abc@example.com' => 'ABC'))
  ->setTo(array('xyz@test.com'))
  ->setBody('This is a test mail.');

$result = $mailer->send($message);
?>

这工作"到第一"只更改 GMAIL_USERNAME、 GMAIL_PASSWORD 和人和地址。我的工作没有其他的解决方案。谢谢。

我同意,swift 的发件人是放在邮件解决方案,比搞乱梨树容易得多。别忘了要启用 PHP 的 php_openssl 扩展。

非常不错的解决方案,使用 SwiftMailer !+ 1

arrrgh。icant 获取 swiftmailer 工作。我不知道如何使用"作曲家",所以我刚刚下载 swiftmailer zip 从 github 我启用 open_ssl,然后再提供我的 gmail 电子邮件和密码,但它仍不起作用。

噢抱歉的我 stupidity。您需要打开您的 gmail 帐户,因为没有一封电子邮件,告诉您启用"不太安全的应用程序"。然后它现在工作 heheh

您的代码不能使用 TLS (SSL),这必要的以便将邮件传递到 Google (和使用端口 465 或 587).

你可以通过设置

$host = "ssl://smtp.gmail.com";

您的代码可疑类似本示例ssl 是指: / / 方案中的主机名。

我建议不要梨树邮件。它尚未更新 2010年以来。请参阅源代码文件中;源代码是几乎过时了,编写 PHP 4 样式和许多错误 / 错误已过帐 (Google 它)。我正在使用 Swift 发件人。

Swift 邮件程序可以集成到任何编写 PHP 5,提供了灵活的和典雅面向对象的方法发送了大量功能的电子邮件中的 web 应用程序。

发送电子邮件使用 SMTP,sendmail,后缀或您自己的自定义传输实现。

支持服务器要求的用户名和密码和/或加密。

不去除请求数据内容的情况下防止头注入式攻击。

发送 MIME 兼容 HTML/多部分电子邮件。

使用事件驱动的插件以自定义库。

处理大型附件和嵌入内联/低内存使用的图像。

它是您可以下载 Swift 发件人免费和开放源代码并上传到服务器。(功能列表复制从网站所有者)。

这里是 Gmail SSL/SMTP 和 Swift 发件人的工作示例...

// Swift Mailer Library
require_once '../path/to/lib/swift_required.php';

// Mail Transport
$transport = Swift_SmtpTransport::newInstance('ssl://smtp.gmail.com', 465)
    ->setUsername('username@gmail.com') // Your Gmail Username
    ->setPassword('my_secure_gmail_password'); // Your Gmail Password

// Mailer
$mailer = Swift_Mailer::newInstance($transport);

// Create a message
$message = Swift_Message::newInstance('Wonderful Subject Here')
    ->setFrom(array('sender@example.com' => 'Sender Name')) // can be $_POST['email'] etc...
    ->setTo(array('receiver@example.com' => 'Receiver Name')) // your email / multiple supported.
    ->setBody('Here is the <strong>message</strong> itself. It can be text or <h1>HTML</h1>.', 'text/html');

// Send the message
if ($mailer->send($message)) {
    echo 'Mail sent successfully.';
} else {
    echo 'I am sure, your configuration are not correct. :(';
}

我希望这能帮助。祝您工作愉快...:)

<?php
date_default_timezone_set('America/Toronto');

require_once('class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

$mail             = new PHPMailer();

$body             = "gdssdh";
//$body             = eregi_replace("[]",'',$body);

$mail->IsSMTP(); // telling the class to use SMTP
//$mail->Host       = "ssl://smtp.gmail.com"; // SMTP server
$mail->SMTPDebug  = 1;                     // enables SMTP debug information (for testing)
                                           // 1 = errors and messages
                                           // 2 = messages only
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
$mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
$mail->Port       = 465;                   // set the SMTP port for the GMAIL server
$mail->Username   = "user@gmail.com";  // GMAIL username
$mail->Password   = "password";            // GMAIL password

$mail->SetFrom('contact@prsps.in', 'PRSPS');

//$mail->AddReplyTo("user2@gmail.com', 'First Last");

$mail->Subject    = "PRSPS password";

//$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

$mail->MsgHTML($body);

$address = "user2@yahoo.co.in";
$mail->AddAddress($address, "user2");

//$mail->AddAttachment("images/phpmailer.gif");      // attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message sent!";
}

?>

为什么不要您设置主机两次和哪一个是正确的?

我已编辑过答案。快乐的:) 编码

请输入您的翻译

Send email using the GMail SMTP server from a PHP page

确认取消