从 SMTP 服务器使用 PHP 发送电子邮件

2022-08-30 06:46:09
$from = "someonelse@example.com";
$headers = "From:" . $from;
echo mail ("borutflis1@gmail.com" ,"testmailfunction" , "Oj",$headers);

我在用 PHP 发送电子邮件时遇到问题。我收到一个错误:。SMTP server response: 530 SMTP authentication is required

我的印象是,您可以在没有SMTP验证的情况下发送电子邮件。我知道这封邮件可能会被过滤掉,但现在这并不重要。

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = someonelse@example.com

这是文件中的设置。我应该如何设置 SMTP?是否有任何 SMTP 服务器不需要验证,或者我必须自己设置服务器?php.ini


答案 1

当您通过需要SMTP身份验证的服务器发送电子邮件时,您确实需要指定它,并设置主机,用户名和密码(如果不是默认端口,则可能设置端口 - 25)。

例如,我通常使用与此设置相似的PHPMailer:

$mail = new PHPMailer();

// Settings
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';

$mail->Host       = "mail.example.com";    // SMTP server example
$mail->SMTPDebug  = 0;                     // enables SMTP debug information (for testing)
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Port       = 25;                    // set the SMTP port for the GMAIL server
$mail->Username   = "username";            // SMTP account username example
$mail->Password   = "password";            // SMTP account password example

// Content
$mail->isHTML(true);                       // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

$mail->send();

你可以在这里找到更多关于PHPMailer的信息: https://github.com/PHPMailer/PHPMailer


答案 2
<?php
ini_set("SMTP", "aspmx.l.google.com");
ini_set("sendmail_from", "YOURMAIL@gmail.com");

$message = "The mail message was sent with the following mail setting:\r\nSMTP = aspmx.l.google.com\r\nsmtp_port = 25\r\nsendmail_from = YourMail@address.com";

$headers = "From: YOURMAIL@gmail.com";

mail("Sending@provider.com", "Testing", $message, $headers);
echo "Check your email now....&lt;BR/>";
?>

或者,有关更多详细信息,请继续阅读


推荐