I want to use the mail() function from my localhost. I have WAMP installed and a Gmail account. I know that the SMTP for Gmail is smtp.gmail.com and the port is 465. What I need to configure in WAMP so I can use the mail() function? Thanks
问题:
回答1:
Ayush's answer was very useful, below a slightly simplified approach
1) Download PHPMailer
2) Extract to folder within you php project and rename it to phpmailer
3) Create gmail-sample.php and paste the following code:
<?php
require("phpmailer/class.phpmailer.php");
$mail = new PHPMailer();
// ---------- adjust these lines ---------------------------------------
$mail->Username = "your.username@gmail.com"; // your GMail user name
$mail->Password = "your-gmail-password";
$mail->AddAddress("friends.email@domain.com"); // recipients email
$mail->FromName = "your name"; // readable name
$mail->Subject = "Subject title";
$mail->Body = "Here is the message you want to send to your friend.";
//-----------------------------------------------------------------------
$mail->Host = "ssl://smtp.gmail.com"; // GMail
$mail->Port = 465;
$mail->IsSMTP(); // use SMTP
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->From = $mail->Username;
if(!$mail->Send())
echo "Mailer Error: " . $mail->ErrorInfo;
else
echo "Message has been sent";
?>
4) Send mail from Browser (e.g. http://localhost/your-project/gmail-sample.php).
回答2:
I used to get the "SMTP Error: Could not connect to SMTP host".
This error is due to XAMPP (1.7.7) and its Apache server, whose "SSL" option is not enabled by default. So we have to enable it ourselves.
What to do?
Into the PHP.ini file of your XAMPP, you must add the following extension (which is not written nor commented):
extension=php_openssl.dll
Save the php.ini file, restart your apache server and.... enjoy it!
Personally it works with:
Port = 465
Host = smtp.gmail.com
SMTPAuth = true
SMTPDebug = 1
SMTPSecure = 'ssl'
回答3:
Make sure the PEAR Mail package is installed.
<?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>");
}
?>
Or you can use a third party php class for send mails. like PHPMailer which is lot more easy
PHPMailer