如何在没有安装 SMTP 服务器的情况下从 PHP 发送电子邮件?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4963688/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 16:22:58  来源:igfitidea点击:

How to send email from PHP without SMTP server installed?

phpemailsmtpdebian

提问by dynamic

I have a classic LAMP platform (Debian, Apache2, PHP5 and MySQL) on a dedicated server.

我在专用服务器上有一个经典的 LAMP 平台(Debian、Apache2、PHP5 和 MySQL)。

I heard PHPMailer can send email without having installed SMTP. Is PHPMailer the best choice for this?

我听说 PHPMailer 可以在没有安装 SMTP 的情况下发送电子邮件。PHPMailer 是最好的选择吗?

采纳答案by Mārti?? Briedis

Yes, PHPMailer is a very good choice.

是的,PHPMailer 是一个非常好的选择。

For example, if you want, you can use the googles free SMTP server (it's like sending from your gmail account.), or you can just skip the smtp part and send it as a typical mail() call, but with all the correct headers etc. It offers multipart e-mails, attachments.

例如,如果您愿意,您可以使用 googles 免费 SMTP 服务器(就像从您的 gmail 帐户发送一样。),或者您可以跳过 smtp 部分并将其作为典型的 mail() 调用发送,但所有正确的标头等。它提供多部分电子邮件、附件。

Pretty easy to setup too.

设置也很容易。

<?php

$mail = new PHPMailer(true);

//Send mail using gmail
if($send_using_gmail){
    $mail->IsSMTP(); // telling the class to use SMTP
    $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 = "[email protected]"; // GMAIL username
    $mail->Password = "your-gmail-password"; // GMAIL password
}

//Typical mail data
$mail->AddAddress($email, $name);
$mail->SetFrom($email_from, $name_from);
$mail->Subject = "My Subject";
$mail->Body = "Mail contents";

try{
    $mail->Send();
    echo "Success!";
} catch(Exception $e){
    //Something went bad
    echo "Fail - " . $mail->ErrorInfo;
}

?>

回答by Justin Jones

Without SMTP, you can use the PHP mail function: http://php.net/manual/en/function.mail.php

没有SMTP,可以使用PHP邮件功能:http: //php.net/manual/en/function.mail.php

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

回答by arnorhs

You can use phpmailer to send using the default php mail() function as well.

您也可以使用 phpmailer 使用默认的 php mail() 函数发送邮件。

I recommend not trying to do things manually using the mail() function, use phpmailer instead and configure it to use mail().

我建议不要尝试使用 mail() 函数手动执行操作,而是使用 phpmailer 并将其配置为使用 mail()。

I'd like to point out that even though you're not using an SMTP connection to send the mails yourself, the mail() function will use either an SMTP connection or the server's sendmail program to send out the emails anyways, so that will have to be configured for it to work correctly.

我想指出的是,即使您没有使用 SMTP 连接自己发送邮件,mail() 函数还是会使用 SMTP 连接或服务器的 sendmail 程序来发送电子邮件,这样就可以了必须对其进行配置才能正常工作。