PHP 邮件功能 - 添加外部图像

Posted

技术标签:

【中文标题】PHP 邮件功能 - 添加外部图像【英文标题】:PHP Mail Function - Add external image 【发布时间】:2021-08-04 22:20:49 【问题描述】:

我正在尝试将存储在我的服务器上的图像添加到使用 php 的 mail() 函数发送的电子邮件中。下面是php代码:

$subject = 'Password Reset';

$message = '
<html>
<head>
    <title>Password Reset</title>
</head>
<body>
    Salve '.$username.', utilizza questo link per resettare la password: <a href="https://gestionale.boscarato.eu/Elaborato/reset/reset_password.php?c='.$operation_code.'">Resetta la tua password </a>
    <br><br>
    <img src="http://gestionale.boscarato.eu/Elaborato/images/logo.png"   >
    <br>
    Cordiali saluti,
    <br>
    <h5>Luca Boscarato [5E] </h5>
</body>
</html>
';

$headers =  'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'From: Luca Boscarato <boscarato.luca@gmail.com>' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

mail($email, $subject, $message, $headers);

问题是图片无法显示(我已经在 gmail 上激活了“全部接受”选项,以便我的客户也接受外部图片。

【问题讨论】:

你为什么不试试 phpmailer with html true ?? github.com/PHPMailer/PHPMailer 是错字还是不知道.. 但是你错过了 = for alt in image source... 我添加了 '=' 但我还是看不到图片 好的...你可以试试另一个图片链接吗?? 您可以在浏览器中查看吗?因为我已经检查过了,它回复了我这个网站无法访问。 【参考方案1】:

http:// 协议(在图片网址中)替换为https://

该错误是由于远程服务器配置不正确造成的。

HTTPS 正确加载

https://gestionale.boscarato.eu/Elaborato/images/logo.png  # HTTPS correct

但是 HTTP 重定向到无效的 URL

http://gestionale.boscarato.eu/Elaborato/images/logo.png  # HTTP before redirect

重定向到

https://gestionale.boscarato.euelaborato/images/logo.png  # invalid URL

注意.eu TLD 后面缺少的斜线。

curl -I "http://gestionale.boscarato.eu/Elaborato/images/logo.png"
HTTP/1.1 301 Moved Permanently
Date: Fri, 14 May 2021 19:21:06 GMT
Server: Apache/2.4.38 (Raspbian)
Location: https://gestionale.boscarato.euElaborato/images/logo.png
Content-Type: text/html; charset=iso-8859-1

【讨论】:

这实际上不是第一次删除 / 了。在 apache 的配置文件中,我设置了从 HTTP 到 HTTPS 的重定向,但有时似乎丢失了 eu 和 Elaborato 之间的 /,您知道可能是什么原因吗?当我直接将它写入浏览器时也会发生这种情况。 顺便说一句,即使我用 https 替换了 http,它也不起作用 可能是因为我的https证书无效(谈论apache服务器)?因为我实现这个系统只是为了一些测试。 @Shark44 这是由于HTTP服务器(apache,nginx,...)配置不正确引起的。如果您有权访问服务器配置,则需要修复重定向规则。它们可能在您网站的.htaccess (Apache)、/etc/nginx/conf.d/sites-enabled/yoursite.conf、您的网站虚拟主机配置中,几乎可以在您更新的任何配置中。 哦,好吧,基本上它可以使用有效的证书,这对我来说很好,我只是想测试一下,谢谢。

以上是关于PHP 邮件功能 - 添加外部图像的主要内容,如果未能解决你的问题,请参考以下文章

将静态图像添加到 php 邮件系统时,为啥会出现“意外 CID”错误?

如何使用 MFMailComposeViewController 在电子邮件正文中添加图像

PHP如何将复选框值添加到邮件功能[重复]

php : 电子邮件发送失败,附件不止一个

外部托管电子邮件并使用 PHP 发送电子邮件

使用 Python Win32 发送电子邮件。将图像添加到电子邮件正文不起作用