如何在 PHP 中使用 SMTP 发送 HTML 电子邮件
我已经能够在 PHP 中使用 SMTP 发送电子邮件,但是当我尝试将内容类型更改为 HTML 时,电子邮件未送达。这是我尝试使用的代码:
require_once "Mail.php";
$from = "FPM <[email protected]>";
$from_name = "FPM";
$host = "localhost";
$username = "username";
$password = "password";
$subject = "Subject";
$message = "Message";
$to = "<[email protected]>";
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject,
'MIME-Version' => '1.0',
'Content-Type' => "text/html; charset=ISO-8859-1"
);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, $message);
如果我从标头中取出“Content-Type”参数,它就会很好地发送消息。我不知道为什么添加它会导致问题。
I've been able to send an email using SMTP in PHP, but when I try to change the Content Type to HTML, the email doesn't get delivered. This is the code I'm trying to use:
require_once "Mail.php";
$from = "FPM <[email protected]>";
$from_name = "FPM";
$host = "localhost";
$username = "username";
$password = "password";
$subject = "Subject";
$message = "Message";
$to = "<[email protected]>";
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject,
'MIME-Version' => '1.0',
'Content-Type' => "text/html; charset=ISO-8859-1"
);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, $message);
If I take the 'Content-Type' argument out of the headers, it sends the message just fine. I don't know why adding that causes a problem.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我做了一些研究,然后编写了自己的代码,使用 SMTP 身份验证发送 HTML 格式的邮件。参见这里:
I did some research, then I made my own code to send mail with HTML formatting using SMTP authentication. See here:
问题很可能出在 Mail 类上,但由于我们不知道您正在使用什么 Mail 类,因此很难回答。如果您还没有这样做,我真的会考虑使用 PHPMailer: https://github.com/ PHPMailer/PHPMailer
The problem most likely lies in the Mail class, but since we don't know what Mail class you're using, it's difficult to answer. If you're not already doing so, I'd really think about using PHPMailer: https://github.com/PHPMailer/PHPMailer
您应该通过 mime 对象创建邮件正文。梨会从那里处理它。
前任:
You should create the mail body via mime object. And pear will handle it from there.
Ex:
使用 PHP 中的 SMTP 将 HTML 电子邮件发送到 2 或 3 个不同的电子邮件
工作100%
Send your HTML email using SMTP in PHP to 2 or 3 different emails
WORKING 100%
在标题的第一行中写入内容类型,就像这样
这对我有用..
Write content type in a first line of header just like this
This is working for me..
您可以分两步完成。
第 1 步:将代码放入您的文件中:
第 2 步:在给定的 URL 中下载此包含的文件。
网址: https://github.com/PHPMailer/PHPMailer.git
并单击 克隆或下载按钮
并设置您的系统文件夹。
You can complete in two steps.
Step 1: Put code in your file:
Step:2 Download this included file in given URL.
Url: https://github.com/PHPMailer/PHPMailer.git
and click on clone or download button
and set folder your system.