如何通过PHP向GMail发送电子邮件?

7
我猜想这是什么:
<?php

    $emailTo = 'user1@gmail.com';
    $subject = 'I hope this works!';
    $body = 'Blah';
    $headers='From: user@gmail.com'

    mail($emailTo, $subject, $body, $headers);

?>

这不太行。我搜索了一些方法,可以使用SMTP auth和邮件客户端和程序(如PHPMailer)发送电子邮件,但是我还没有一个简明直接的有用答案。基本上,我想要一种通过我的网站上的表单从另一个电子邮件地址(发件人)向gmail、hotmail等(将成为我的电子邮件)发送电子邮件的方法。

问题:

  1. 我需要下载第三方库吗?
  2. 如果不需要,我该如何更改上面的代码使其起作用。

谢谢!


3
好的,建议您使用phpmailer或swiftmailer来发送邮件。mail()函数太简单了,只适合用于一些简单的本地操作,不建议在正式项目中使用。 - Marc B
@MarcB 确实如此..不幸的是,我刚接触PHP,使用这个库还有困难。 - John Doe
1个回答

7

使用PHPMailer库。它比使用邮件原生函数更好,因为在PHPMailer中,您可以使用用户身份验证来避免将电子邮件发送到垃圾邮件中。您可以在不配置邮件服务器的情况下使用此库。您可以在此链接中下载:https://github.com/PHPMailer/PHPMailer

看一个例子:

$mail             = new PHPMailer();

$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host       = "mail.yourdomain.com"; // SMTP server
$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
                                           // 1 = errors and messages
                                           // 2 = messages only
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->SMTPSecure = "tls";                 
$mail->Host       = "smtp.gmail.com";      // SMTP server
$mail->Port       = 587;                   // SMTP port
$mail->Username   = "yourusername@gmail.com";  // username
$mail->Password   = "yourpassword";            // password

$mail->SetFrom('user@gmail.com', 'Test');

$mail->Subject    = "I hope this works!";

$mail->MsgHTML('Blah');

$address = "test@test.com";
$mail->AddAddress($address, "Test");

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

只是澄清一下: SetFrom 是发件人,AddReplyTo 是我,收件人,对吗? 另外,AddReplyTo 也可以是 Gmail 地址吗? - John Doe
在这种情况下,您不需要添加 addReplyTo,SetFrom 是发件人。接收者是 $mail->AddAddress。 - msantos
我明白了,谢谢!还有一个问题: $mail->Host = "mail.yourdomain.com"; 在yourdomain这个地方,是指网站的域名还是你用于此情况的邮件域名? - John Doe
在这种情况下,您使用gmail域:smtp.gmail.com。phpmailer需要此信息来识别电子邮件的主机,以验证接收者。如果是真实的电子邮件,则了解这一点非常重要。这是避免发送垃圾邮件的技巧。 - msantos
好的,太棒了!感谢您的帮助! - John Doe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接