Email::MIMEs
(1.926) walk_parts
및 body_set
을 사용하여 멀티 파트 MIME 전자 메일에서 파트의 본문 텍스트를 변경하려고합니다.Email :: MIME을 사용하여 한 부분의 본문을 변경하는 방법? 또는 : body_set은 누가 작동합니까?
변경 사항이 있지만 메일을 보낼 때 이전/변경되지 않은 메일 텍스트가 전송됩니다. 질문 : 변경 사항을 '활성화'하려면 어떻게해야합니까?
참조 :
use Email::MIME;
my $raw_message_text = q!Date: Wed, 26 Feb 2014 08:02:39 +0100
From: Me <[email protected]>
To: You <[email protected]>
Subject: test
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="------------010309070301040606000908"
This is a multi-part message in MIME format.
--------------010309070301040606000908
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
this is a test
--------------010309070301040606000908
Content-Type: text/plain;
name="file-to-attach.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="file-to-attach.txt"
dGV4dCBpbnNpZGUgYXR0YWNobWVudAoK
--------------010309070301040606000908--
!;
my $parsed_email = Email::MIME->new($raw_message_text);
$parsed_email->walk_parts(sub {
my ($part) = @_;
return if $part->subparts; # multipart
return unless ($part->content_type =~ /text\/plain.*charset=utf-8/i);
$part->body_set("new body text");
});
print "As you see the change is there:\n";
$parsed_email->walk_parts(sub {
my ($part) = @_;
return if $part->subparts; # multipart
my $body = $part->body;
print "Body:$body\n";
});
print "But the email object itself doesn't notice that:\n\n";
print $parsed_email->as_string;
이 먼저 변경된 본문 텍스트가 표시됩니다, 그래서 당신이이 볼! 그러나 전체 메일이 표시되면 이전 본문 텍스트가 사용됩니다. Email::Sender
을 사용하여 이메일을 보내는 경우에도 마찬가지입니다. 그래서 body_set
의 올바른 사용법이 무엇인지 궁금합니다 ...
그것은 나를 위해 1.910 – Sorin