PHP如何使用MAIL函数发邮件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP如何使用MAIL函数发邮件相关的知识,希望对你有一定的参考价值。

最好写个小程序演示一下

php mail 发送邮件
mail
(PHP 4, PHP 5)

mail — 发送邮件

说明
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
发送一封电子邮件。

参数
to
电子邮件收件人,或收件人列表。

本字符串的格式必须符合 » RFC 2822。例如:

user@example.com
user@example.com, anotheruser@example.com
User <user@example.com>
User <user@example.com>, Another User <anotheruser@example.com>
subject
电子邮件的主题。

Caution
本项不能包含任何换行符,否则邮件可能无法正确发送。

message
所要发送的消息。

行之间必须以一个 LF( )分隔。每行不能超过 70 个字符。

Caution
(Windows 下)当 PHP 直接连接到 SMTP 服务器时,如果在一行开头发现一个句号,则会被删掉。要避免此问题,将单个句号替换成两个句号。 <?php
$text = str_replace(" .", " ..", $text);
?>

additional_headers(可选项)
String to be inserted at the end of the email header.

This is typically used to add extra headers (From, Cc, and Bcc). Multiple extra headers should be separated with a CRLF ( ).
参考技术A $to = guest@163.com;
$subject = "=?UTF-8?B?".base64_encode('邮件标题')."?="; //防止乱码
$message = '邮件内容';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; //Additional headers
$headers .= 'Reply-To: Admin<admin@gmail.com>' . "\r\n";
$headers .= 'From: Admin<admin@gmail.com>' . "\r\n";
mail($to,$subject,$message,$headers);

这是比较通用的PHP发邮件方法,祝你好运!本回答被提问者采纳
参考技术B if(@mail("123@163.com","邮件标题","邮件内容"))
echo "成功";

如何配置 Laravel mail.php 以使用内置邮件功能?

【中文标题】如何配置 Laravel mail.php 以使用内置邮件功能?【英文标题】:How to configure Laravel mail.php to use built-in mail function? 【发布时间】:2017-09-17 10:39:24 【问题描述】:

我需要通过mail() PHP 函数发送电子邮件。 我在某处读到我必须将config/mail.php 中的driver 参数更改为sendmail

默认情况下是这样的:

'driver' => env('MAIL_DRIVER', 'smtp'),

现在,它看起来像这样:

'driver' => 'sendmail',

也试过这个:

'driver' => 'mail',

但是,mail() 函数仍然不起作用。我需要改变什么?

【问题讨论】:

【参考方案1】:

您必须在 .env 文件中设置您的邮件配置。在这里,您必须设置所有邮件驱动程序和所有详细信息。请参阅此文档https://laravel.com/docs/5.0/mail

【讨论】:

您发布的链接解释了如何配置一堆 API 驱动程序,但没有解释如何配置 sendmail,这可能是 OP 发布此问题的原因。【参考方案2】:

你可以设置你的邮件配置.env文件,比如

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=youremail@gmail.com
MAIL_PASSWORD="password"
MAIL_ENCRYPTION=tls

还在 config/mail.php 中设置配置,例如:

'from' =&gt; ['address' =&gt; 'youremail@gmail.com', 'name' =&gt; 'Test'],

然后你可以清除缓存:

php artisan cache:clear
php artisan config:cache
php artisan cache:clear

【讨论】:

这些不是使用 PHP 的 mail() 函数的正确设置。该功能不需要用户名和电子邮件。如果您想从其他服务器(如 Gmail)发送电子邮件,则使用这些设置。 @wmacYes- 谢谢!我的问题与 OP 完全相同,令人难以置信的是,我现在浪费了多少时间,而这方面的信息却很少。 如何在 Laravel 5.5 中使用 PHP 的 mail() 函数?可能吗? 是问题。我一直被告知要更改为 MAIL_DRIVER=smtp 并输入我的 gmail 帐户凭据,但我不希望这样!我对此投了反对票,因为它没有回答问题。 链接到我基本上在问同样事情的线程:***.com/a/46550390/521392 我用自己的邮件服务器(使用 smtp)设置了所有内容,但它无法正常工作。直到我将MAIL_ENCRYPTION 的值设置为tls 而不是默认值null... 这不适用于 php 的 sendmail 配置。这是一个 SMTP。【参考方案3】:

要使用在localhost 上运行的电子邮件服务器,您的.env 文件应如下所示(PHP 的mail 函数不需要用户名或密码)

MAIL_DRIVER=smtp
MAIL_HOST=localhost
MAIL_PORT=25
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=null

然后,更新配置缓存:

php artisan config:cache

【讨论】:

非常感谢朋友!!!我已经搜索这个答案很长时间了,这很糟糕,laravel 官方文档没有提供这个信息。你是最棒的,@lbel! 谢谢,就像@Vaha 我在任何地方都找不到这个。我已经搜索了几个小时,但没有任何地方说你应该像这样使用它。 php artisan config:cache 部分至关重要,不要像我一样忘记它! php artisan config:clear 是我认为应该运行的实际命令 对于本地主机,您可以像这样设置MAIL_DRIVER=log,它将打印日志文件中的所有邮件。很有用!【参考方案4】:

要和 mail() PHP 函数一样,在大多数情况下,你应该按照以下方式配置 Laravel:

使用 sendmail,在 .env:

MAIL_DRIVER=sendmail

如果您使用的是 Larvel 7 或更高版本

MAIL_MAILER=sendmail

Laravel 7 将 MAIL_DRIVER 替换为 MAIL_MAILER

不需要主机、用户、密码、端口和加密。

此时,您可能会检查它是否已经工作,但有时还需要下一步。

在 config/mail.php 中设置一个新的 .env 选项:

'sendmail' => env('MAIL_SENDMAIL', '/usr/sbin/sendmail -bs')

在 .env 中设置 sendmail 路径。您可以在 phpinfo() 中查看sendmail_path,但通常是这个:

MAIL_SENDMAIL='/usr/sbin/sendmail -t -i'

【讨论】:

这是正确的答案。特别是关于在我的情况下将选项设置为“sendmail -t -i”的花絮。我讨厌必须使用这个基本的 php 邮件功能,但在我的一个项目中,我不得不......谢谢。 如果您要在那里进行编辑,则需要在config/mail.php 中为'sendmail' =&gt; env('MAIL_SENDMAIL', '/usr/sbin/sendmail -bs'),。不要忘记引号和最后的逗号 哦!谢谢克里斯,我刚刚在我的回答中修复了它。 请注意,sendmaildriver 要求 PHP 的 proc_open() 函数出于安全原因在“php.ini”中使用 disabled_functions 时未被禁用。 对于 Laravel 7 及更高版本,请使用 MAIL_MAILER=sendmail

以上是关于PHP如何使用MAIL函数发邮件的主要内容,如果未能解决你的问题,请参考以下文章

如何在php用mail发送邮件

如何配置 Laravel mail.php 以使用内置邮件功能?

如何防止通过 PHP mail() 发送的邮件进入垃圾邮件? [复制]

linux如何发邮件

PHP 的“邮件”是如何工作的?

我如何使用 php 发送电子邮件,包括 mail.php 文件