使用mail()发送php smtp电子邮件

时间:2018-08-16 14:35:58

标签: php email

我尝试通过SMTP服务器发送电子邮件。是否可以使用mail()函数发送消息?还是我必须使用PHPMailer或Pear?

$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com" . "\r\n" .
"CC: somebodyelse@example.com";
mail($to,$subject,$txt,$headers);

是否可能像这样:

$headers .= "Host: myhost.example.com\r\n";
$headers .= "User: myusername\r\n";
$headers .= "Password: mypassword\r\n";

?我正在寻找可能的简单版本。

3 个答案:

答案 0 :(得分:0)

在Windows上,您可以在php.ini中指定用于SMTP的服务器,但不能在* nix上指定希望找到sendmail或符合sendmail要求的服务器

您可以在{nix系统上设置postfixExim或其他一些smtpd,以用作经过身份验证的中继来通过其他SMTP服务器发送邮件。

但是随后,这种情况正在迅速走向unix.stackexchange.comsuperuserserverfault

答案 1 :(得分:0)

您是否要通过需要身份验证的SMTP服务器发送电子邮件?如果是这样,则不能使用本机mail()函数:
php.ini & SMTP= - how do you pass username & password

答案 2 :(得分:0)

PHP Documentation

中的大量示例

例如

<?php
$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = array(
    'From' => 'webmaster@example.com',
    'Reply-To' => 'webmaster@example.com',
    'X-Mailer' => 'PHP/' . phpversion()
);

mail($to, $subject, $message, $headers);
?>

为提高可传递性,您可能希望通过将-f参数传递给sendmail来设置“发件人”地址,如下所示:

mail($to, $subject, $message, $headers, '-f webmaster@example.com');

您还应该检查您的域上是否设置了SPF记录,以允许Web服务器IP地址代表该域发送邮件。