PHP如何使用MAIL函数发邮件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP如何使用MAIL函数发邮件相关的知识,希望对你有一定的参考价值。
最好写个小程序演示一下
php 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' => ['address' => 'youremail@gmail.com', 'name' => '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' => env('MAIL_SENDMAIL', '/usr/sbin/sendmail -bs'),
。不要忘记引号和最后的逗号
哦!谢谢克里斯,我刚刚在我的回答中修复了它。
请注意,sendmail
driver 要求 PHP 的 proc_open()
函数出于安全原因在“php.ini”中使用 disabled_functions
时未被禁用。
对于 Laravel 7 及更高版本,请使用 MAIL_MAILER=sendmail
以上是关于PHP如何使用MAIL函数发邮件的主要内容,如果未能解决你的问题,请参考以下文章
如何配置 Laravel mail.php 以使用内置邮件功能?