为什么 PDF 在使用 Email::MIME 通过 SMTP 邮寄后会损坏/无法读取?
我已按照 Email::Sender 和 Email::MIME 看起来不错,直到您尝试打开 PDF。然后很明显它的大小比原来的要小并且不知何故损坏了。我的脚本或多或少是出于测试目的而给出的示例的模板副本,但我担心 MIME 内容在这里不起作用。
use strict;
use warnings;
use Data::Dumper;
use IO::All ;
use Email::Simple;
use Email::Simple::Creator;
use Email::MIME;
use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP;
# assemble the parts
my @parts = (
Email::MIME->create(
attributes => {
filename => "report.pdf",
content_type => "application/pdf",
encoding => "quoted-printable",
name => "report.pdf",
},
body => io("report.pdf")->all
),
Email::MIME->create(
attributes => {
content_type => "text/plain",
disposition => "attachment",
charset => "US-ASCII",
},
body => "Hello there!",
),
);
# assemble parts into email
my $email = Email::MIME->create(
header => [
To => '[email protected]',
From => '[email protected]',
Subject => "Thanks for all the fish ...",
],
parts => [@parts],
);
# standard modifications
$email->header_set( 'X-PoweredBy' => 'RT v3.0' );
# more advanced
# $_->encoding_set('base64') for $email->parts;
# send the email
my $transport = Email::Sender::Transport::SMTP->new({
host => 'mail.whatever.com',
# port => 2525,
sasl_username => 'webuser',
sasl_password => 's3cr3t',
timeout => 20,
});
sendmail( $email, { transport => $transport } );
我正在使用 Windows 和 Perl 5.12.1.0。它似乎不是 IO::All 模块,但我认为问题出在此处。有谁对这个东西足够了解来帮助我解决它吗?
我尝试过二进制模式、不同的 SMTP 服务器、不同的 PDF 文件,但我根本无法让这该死的东西工作。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在发送电子邮件之前,您需要对二进制附件进行编码。
我不知道电子邮件::MIME。我使用 MIME::Lite 并且从未遇到任何问题,因为编码是自动完成的。
You need to encode your binary attachments before sending the email.
I don't know Email::MIME. I use MIME::Lite and never had any problem because encoding is done automatically.