2015-02-23 142 views
0

我正在使用PHPMailer。我必须发送两个附件,两者都是链接(一个是base64图像,第二个是url)。通过PHPMailer通过URL附件发送电子邮件

// Variables with images 
$croped_img = 'data:image/jpg;base64,/extreme_long_code_here'; 
$photo_thumbnail_url = 'http://t2.ftcdn.net/jpg/00/76/44/75/400_F_76447580_gOWAV0P8APW0iC51OsW5huD6qoiEsh7O.jpg'; 

// PHPMailer 
$mail->addAttachment('$photo_thumbnail_url', 'selected.jpg'); 
$mail->addAttachment('$croped_img', 'croped_img.jpg'); 

PHPMailer的工作原理是因为如果我以这种形式发送电子邮件,附件不会来。 但是,如果我链接本地图像,例如'images/abc.jpg'然后他们来了。

我应该使用哪些php函数将变量作为电子邮件附件发送?

+0

你应该使用方法AddEmbeddedImage – Komal 2015-02-23 12:06:53

+0

但如何在我的情况下使用这个?我仍在尝试,但它不会为我工作。 – 2015-02-23 12:43:16

+0

可能重复的[PHP的字符串附件](http://stackoverflow.com/questions/28129848/php-attachment-from-string) – Synchro 2015-02-23 13:46:28

回答

1

与往常一样,请确保您使用的是最新的PHPMailer的版本。

您需要使用addStringAttachment,文档here

$photo_thumbnail_url = 'http://t2.ftcdn.net/jpg/00/76/44/75/400_F_76447580_gOWAV0P8APW0iC51OsW5huD6qoiEsh7O.jpg'; 
$mail->addStringAttachment(file_get_contents($photo_thumbnail_url), 'selected.jpg'); 

msgHTML功能自动处理data网址,将它们转换为嵌入式图像自动cid值,因此,如果您的图片已嵌入在HTML中,不需要为此工作做任何事情。

如果你想自己处理数据URL转换,你可以看看它是如何工作的here

+0

终于有效。这是我正在寻找的。谢谢。 – 2015-02-23 14:02:59

0

确认您的PHPMailer库是最新的!

再试试这一个,

$mail->AddEmbeddedImage($photo_thumbnail_url, 'selected.jpg'); 
$mail->AddEmbeddedImage($croped_img, 'croped_img.jpg'); 
+0

这是行不通的。我想附上,而不是嵌入。在文档中,我发现这个:AddAttachment($ path,$ name,$ encoding,$ type);但它仍然无法工作。 – 2015-02-23 13:21:32

+0

这不行;错误的工作功能。 – Synchro 2015-02-23 13:59:39