使用PHP嵌入电子邮件中使用的图像?

使用PHP嵌入电子邮件中使用的图像?,php,image,email,attachment,embedding,Php,Image,Email,Attachment,Embedding,我知道如何将图像作为附件嵌入电子邮件,但这并不是我真正想要做的。我想做的是在邮件中嵌入一个图像,并在邮件正文中使用它。是否可以这样做,或者可能引用邮件中使用的附加文件 我应该担心吗?通过网络上的图像链接加载它们是否更有益?我想这会减轻我服务器上的一些负载,这样就不必在每次打开的电子邮件中直接从我的站点下载,从而稍微减少带宽 注意:我不是在寻找任何电子邮件框架或库等,只是为了简单地完成这项任务。 我认为唯一的方法是通过url引用图像,如下所示: <img src="http://www.yo

我知道如何将图像作为附件嵌入电子邮件,但这并不是我真正想要做的。我想做的是在邮件中嵌入一个图像,并在邮件正文中使用它。是否可以这样做,或者可能引用邮件中使用的附加文件

我应该担心吗?通过网络上的图像链接加载它们是否更有益?我想这会减轻我服务器上的一些负载,这样就不必在每次打开的电子邮件中直接从我的站点下载,从而稍微减少带宽

注意:我不是在寻找任何电子邮件框架或库等,只是为了简单地完成这项任务。


我认为唯一的方法是通过url引用图像,如下所示:

<img src="http://www.youwebsite.com/yourimage.jpg" alt="This is a description" />


我认为唯一的方法是通过url引用图像,如下所示:

<img src="http://www.youwebsite.com/yourimage.jpg" alt="This is a description" />

人们会打电话告诉你使用SwiftMailer或其他图书馆。但这并不难。这确实很挑剔,但并不难。下面是我使用的一个函数。我已经匿名了一点,希望没有破坏任何东西。在html消息(我从另一个函数获得)中,通过以下方式链接到您的附加图像:

$output .= '<p><img src="cid:' . $linkID . '" alt="graph" /></p>';
这是否值得做是另一个问题。如果附加图像,则表示您正在使用带宽发送消息。也许你最好一次使用全部带宽,而不是分散使用?也许不是


我没有使用附加的图像,直到我必须发送一个不同的图像给每个收件人。我不打算在我们的服务器上存储和管理所有这些图像(并尝试对它们进行唯一命名)。

人们会插话告诉您使用SwiftMailer或其他库。但这并不难。这确实很挑剔,但并不难。下面是我使用的一个函数。我已经匿名了一点,希望没有破坏任何东西。在html消息(我从另一个函数获得)中,通过以下方式链接到您的附加图像:

$output .= '<p><img src="cid:' . $linkID . '" alt="graph" /></p>';
这是否值得做是另一个问题。如果附加图像,则表示您正在使用带宽发送消息。也许你最好一次使用全部带宽,而不是分散使用?也许不是

我没有使用附加的图像,直到我必须发送一个不同的图像给每个收件人。我不打算在我们的服务器上存储和管理所有这些图像(并尝试对它们进行唯一命名)。

内容类型:multipart/related;
type=“text/html”;
boundary=“Boundary1”
--边界1
内容类型:多部分/备选;
boundary=“Boundary2”
--边界2
内容类型:text/html;charset=“utf-8”
内容传输编码:8比特
--边界2--
--边界1
内容类型:图像/jpeg;name=“somefilename.jpg”
内容传输编码:base64
内容ID:
内容配置:内联;filename=“somefilename.jpg”
//二进制数据
--边界1--
边界、字符集、内容传输编码当然都可以选择。PHPMailer包可以自动为您执行此操作:

另请参见以下位置的包含图像:

内容类型:多部分/相关;
type=“text/html”;
boundary=“Boundary1”
--边界1
内容类型:多部分/备选;
boundary=“Boundary2”
--边界2
内容类型:text/html;charset=“utf-8”
内容传输编码:8比特
--边界2--
--边界1
内容类型:图像/jpeg;name=“somefilename.jpg”
内容传输编码:base64
内容ID:
内容配置:内联;filename=“somefilename.jpg”
//二进制数据
--边界1--
边界、字符集、内容传输编码当然都可以选择。PHPMailer包可以自动为您执行此操作:


另请参见在以下位置包含图像:

是否
$this->getGraph()
仅加载图像的内容,如
文件\u get\u contents()
是否会?在我的例子中,getGraph()实际上使用图表库创建图像,但是是的,这是同样的想法。在邮件中而不是作为链接发送图像的原因可能是一些邮件客户端不会在远程服务器上打开图像,因为这可能会显示用户已打开了邮件。或者至少邮件客户端会询问用户是否要远程查看图像。
$this->getGraph()
只是像
file\u get\u contents()
那样加载图像的内容吗?在我的例子中,getGraph()实际上使用图表库创建图像,但是是的,这是同样的想法。在邮件中而不是作为链接发送图像的原因可能是一些邮件客户端不会在远程服务器上打开图像,因为这可能会显示用户已打开了邮件。或者至少邮件客户端会询问用户是否远程查看图像。