Perl 无法从Gmail正确预览或下载PDF
我在一家主要的电子邮件提供商有一个IMAP/SMTP帐户。我想撰写并向多个收件人发送电子邮件。这些电子邮件将包含一个或多个纯文本和/或PDF附件。我用于测试的PDF附件是我用Libre Office Writer中的“导出为PDF”功能创建的,这是我以前多次使用的功能,没有任何问题 我正在使用Perl模块Email::MIME来编写电子邮件。鉴于此,我已将电子邮件的组成编码如下:Perl 无法从Gmail正确预览或下载PDF,perl,email,pdf,gmail,email-attachments,Perl,Email,Pdf,Gmail,Email Attachments,我在一家主要的电子邮件提供商有一个IMAP/SMTP帐户。我想撰写并向多个收件人发送电子邮件。这些电子邮件将包含一个或多个纯文本和/或PDF附件。我用于测试的PDF附件是我用Libre Office Writer中的“导出为PDF”功能创建的,这是我以前多次使用的功能,没有任何问题 我正在使用Perl模块Email::MIME来编写电子邮件。鉴于此,我已将电子邮件的组成编码如下: use Email::MIME; use IO::All; use File::Basename; my @par
use Email::MIME;
use IO::All;
use File::Basename;
my @parts = (
Email::MIME->create(
attributes => {
filename => basename($attachments{pdf}),
content_type => "application/pdf",
encoding => "quoted-printable",
name => $attachments{pdf},
disposition => "attachment",
},
body => io( $attachments{pdf} )->binary->all,
),
Email::MIME->create(
attributes => {
filename => basename($attachments{text}),
content_type => 'text/plain',
name => $attachments{text},
disposition => "attachment",
},
body => io( $attachments{text} )->all,
),
Email::MIME->create(
attributes => {
content_type => "text/plain",
charset => "US-ASCII",
},
body => $this_body,
),
);
my $email = Email::MIME->create(
header_str => [
From => $from,
To => [ $data->{$recipient}->{EmailAddress} ],
Subject => $subject,
],
parts => [ @parts ],
);
然后,$email
对象被传递到一个email::Sender调用并发送消息
我使用四个不同的电子邮件帐户来评估结果。一个是我的IMAP账户;另一个是转发到我的IMAP帐户的帐户;第三个是雅虎!邮件帐户;第四个是Gmail账户
使用上面的代码,前三个帐户的结果与预期的一样——其中“as expected”表示电子邮件正文、纯文本附件和PDF附件都已打开并正确呈现
然而,当我转到我的Gmail帐户时,PDF附件出现了两个问题:
*PDF无法在Gmail web界面中正确预览。出现了几个单词,但都是乱七八糟的。
*当我将PDF下载到磁盘时,文件大小似乎是正确的,但当我打开文件时,它似乎是完全空白的。
但还有一个观察:如果在Gmail web界面中查看邮件时,我:
- 点击“更多”(3个垂直点)
- 然后单击“显示原件”
- 然后单击“下载原件”
- 然后在我的Thunderbird客户端中打开下载的F文件