我知道這個話題已經被多次提出,但不是專門針對 Delphi。我正在嘗試通過郵件將生成的二維碼作為行內 img 發送。目前我成功地這樣做了,但只是作為 URL:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABqQAAAakCAYAAA..." width="170" height="170">
但是當涉及到 Gmail 時,它只會添加一個空方格。我已經查找了許多如何將 img 嵌入電子郵件的答案,例如以下 2 個帖子:
Base64 影像到 gmail
Gmail 阻止電子郵件模板中嵌入的小型嵌入式影像
但我不明白如何在 Delphi 中的答案中實作代碼。
我還找到了從磁盤獲取 img 作為附件的代碼:
procedure TForm1.Button1Click(Sender: TObject);
var
oSmtp : TMail;
cid : WideString;
begin
oSmtp := TMail.Create(Application);
// Add embedded image and return the unique identifier of the attachment
cid := oSmtp.AddInline('c:\test.jpg');
// Set HTML body format
oSmtp.BodyFormat := 1;
// Set HTML body
oSmtp.BodyText := '<html><body>Hello, this is an embedded <img src="cid:'
cid '"> picture.</body></html>';
end;
// i do not use this code it is just an example of what i have found thus far
目前我對 img 所做的就是:
HtmlBody = ReplaceStr(HtmlBody, [parameter_img],'<img src="data:image/png;base64,' StreamToString(imgStream) '"width="170" height="170"/>');
但是我無法保存imgs,所以我想直接插入base64string。
更新
我設法在我的電子郵件中獲取了附件,它在那里,但在文本區域中只有一個空白方塊。
代碼的 img 部分和原始電子郵件訊息:
<img src="cid:qrcode.png" width="170" height="170" />';
--wpn=_6hoco9kAT3gWlDy6D313EA3BETyyOfe
Content-Type: text/html; charset="windows-1250"
Content-Transfer-Encoding: base64
Content-Disposition: inline
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv
L0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC9sb29zZS5kdGQiPjxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRv
d3MtMTI1MCI PGJvZHk PGltZyBzcmM9Imh0dHBzOi8vbmFpcy1yYXp2b2ouaXBsdXMuc2kvX2Fz
...
--wpn=_6hoco9kAT3gWlDy6D313EA3BETyyOfe
Content-Type: image/png; name="qrcode.png"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="qrcode.png"
Content-ID: qrcode.png
--wpn=_6hoco9kAT3gWlDyD6D313EA3BEyyOfe--
uj5u.com熱心網友回復:
起初我認為問題是這樣的:PCFET0NUWVBFIGh0bWwgUFVCTElDICItL
因為它看起來不像以 iVBOR 開頭的 png 的 base64 代碼。
但問題就在這里:Content-ID: qrcode.png
設定 Content-ID 時必須小心,因為在某些版本中,僅使用引號設定它是不夠的,您必須像這樣添加 <> 來設定它:Content-ID: <qrcode.png>。
有了這個結果就是想要的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/472952.html
