0
我需要生成嵌入橫幅圖像的HTML電子郵件。它必須經過Outlook2007郵件客戶端。我試圖base64編碼圖像,並把它內聯(它看起來好),但Outlook不會發送電子郵件。我已經通過許多不同的文章(用各種編程語言)剔除了這些,但是它仍然不起作用。此代碼創建電子郵件並附加圖像,但不顯示圖像。通過Perl在Outlook HTML電子郵件中包含嵌入式圖像
use Win32::OLE;
use Win32::OLE::Const 'Microsoft Outlook';
my $oMailer = new Win32::OLE('Outlook.Application') or
die "Unable to start an Outlook instance: $!\n";
my $oEmail = $oMailer->CreateItem(0) or
die "Unable to create mail item: $!\n";
$oEmail->{'To'} = '[email protected]';
$oEmail->{'Subject'} = "Embedded image test";
$oEmail->{'BodyFormat'} = olFormatHTML;
$oEmail->{'HTMLBody'} = "<html><body><img src=\"cid:banner.jpg\"></body></html>";
my $attachments = $oEmail->Attachments();
my $bannerAttachment = $attachments->Add('C:/test/banner.jpg', olEmbeddeditem);
$bannerAttachment->PropertyAccessor->SetProperty(
"http://schemas.microsoft.com/mapi/proptag/0x3712001E", "banner.jpg");
$oEmail->save();
(順便說一句,我張貼,因爲他們沒有反正失敗之前去掉所有的Win32::OLE->LastError()
檢查。)
當添加附件,它不會附件類型設置爲olEmbeddeditem(5);不知道這是否與問題有關。
SetProperty也不設置該值。這應該設置在HTML中的img src中引用的Content ID(cid)。我將下面的代碼用於GetProperty,並返回一個空字符串。
my $CIDvalue = $bannerAttachment->PropertyAccessor->GetProperty(
"http://schemas.microsoft.com/mapi/proptag/0x3712001E");
print ">>>CIDvalue = $CIDvalue\n";
這麼近我可以品嚐它!