배너 이미지가 포함 된 HTML 전자 메일을 생성해야합니다. Outlook2007 메일 클라이언트를 통과해야합니다. 내가 base64encode 이미지를 시도하고 그것을 인라인 ( 좋은 보았다)하지만 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();
은 (BTW, 나는 그들 중 누구도 어쨌든 실패하지 않기 때문에 게시하기 전에 모든 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";
너무 가까이서 맛볼 수 있습니다!