나는 multipart 콘텐츠 이메일에 pdf 파일을 첨부하려하고있다. 예, 나는 mime lite 또는 10 억 개의 펄 모듈을 사용할 수 있지만, 이 상자에서 나오는대로 지금까지 내가 이메일이 올바르게 보내지 만 (분명히) PDF로는 그것이이있다 말한다 파일을 열려고 할 때거기에 Net과 함께 PDF 파일을 첨부 할 수있는 방법은 : 펄 :
#!/usr/bin/perl
use Net::SMTP;
use MIME::Base64 qw(encode_base64);
use MIME::Base64 qw(decode_base64);
use strict;
use warnings;
my $from = '[email protected]';
my $to = '[email protected]';
my $to2 = '[email protected]';
my $boundary = 'frontier';
open my $Initial_File, '<', "summary.pdf";
binmode $Initial_File;
open my $Initial_OutFile, '>', "temp.pdf";
my $buf;
while (read($Initial_File, $buf, 60 * 57)) {
print $Initial_OutFile encode_base64($buf);
}
close $Initial_OutFile;
close $Initial_File;
open INFILE, '<', "temp.pdf";
open my $final_output, '>',"summary2.pdf";
binmode $final_output;
my $buffer;
while ($buffer = <INFILE>) {
print $final_output decode_base64($buffer);
}
my @pdf = $final_output;
close $final_output;
close INFILE;
my $smtp = Net::SMTP->new('xx.xxx.com');
$smtp->mail($from);
$smtp->recipient($to,$to2, { SkipBad => 1 });
$smtp->data();
$smtp->datasend("Subject: Test Email \n");
$smtp->datasend("MIME-Version: 1.0\n");
$smtp->datasend("Content-type: multipart/mixed;\n\tboundary=".$boundary."\n");
$smtp->datasend("\n");
$smtp->datasend("--".$boundary."\n");
$smtp->datasend("Content-type: text/plain\n");
$smtp->datasend("Content-Disposition: quoted-printable\n");
$smtp->datasend("\nTest From You \n");
$smtp->datasend("--".$boundary."\n");
$smtp->datasend("Content-Disposition: attachment; filename=summary2.pdf \n");
$smtp->datasend("Content-Type: application/pdf; name=summary2.pdf ");
$smtp->datasend("\n");
$smtp->datasend("@pdf\n");
$smtp->datasend("--".$boundary."--\n");
$smtp->dataend();
# $smtp->quit;
exit;
이, 펄 5.8.8를 사용하도록 제한하고있어 잘못된 인코딩을 사용하는 경우 PDF 파일을 첨부 파일에 버퍼링하는 방법이 있습니까?
은 [MIME :: Lite는 순수 펄한다] (http://deps.cpantesters.org/?module=MIME%3A%3ALite&perl=5.8.8&pureperl=on), 그냥 코드를 복사합니다. – daxim
"상자에서 나오는대로 펄 5.8.8을 사용하는 것으로 제한됩니다."- 아마도 문제를 먼저 처리해야합니다 :-) CPAN을 사용할 수 없다면 실제로 전체 Perl의 힘. –
@DaveCross는 완전히 동의합니다. 이미 CPAN을 설치했다면 프로덕션 서버와 IT가 조금이라도 변경하지 않으려 고합니다. – isJustMe