电子邮件::发件人如何在Perl中附加文件?
系统:Ubuntu18.04LTS上的Perl5.26.1。有一个子例程在名为util2.pl的文件中发送电子邮件。该子例程称为mailadming,它有一组参数,如SMTP服务器信息、往返地址等。主程序中需要util2.pl 我在不同的网站和谷歌上搜索了大约2个小时,阅读了有关Email::Sender的手册,我似乎找不到如何在使用Email::Sender时附加文件。我正在升级一台计算机,并且使用了Mail::Sender,但是对于Email::Sender,不推荐使用Mail::Sender,并且Email::Sender上的文档很少 我在Email::Sender docs中找不到任何关于文件附件的信息 由于Mail::Sender不再更新,继续使用它将是一个坏主意。我们在Perl上投入了大量资金,因此目前无法更改工具 有人能帮我吗? 我应该为Perl使用另一个电子邮件模块吗?电子邮件::发件人似乎是更新最频繁和最新的。 编辑:这是我到目前为止的代码:电子邮件::发件人如何在Perl中附加文件?,perl,email,email-attachments,Perl,Email,Email Attachments,系统:Ubuntu18.04LTS上的Perl5.26.1。有一个子例程在名为util2.pl的文件中发送电子邮件。该子例程称为mailadming,它有一组参数,如SMTP服务器信息、往返地址等。主程序中需要util2.pl 我在不同的网站和谷歌上搜索了大约2个小时,阅读了有关Email::Sender的手册,我似乎找不到如何在使用Email::Sender时附加文件。我正在升级一台计算机,并且使用了Mail::Sender,但是对于Email::Sender,不推荐使用Mail::Sende
my $email = Email::Stuffer->new(
text_body=>$body,
subject=>$subjparam,
from=>$from, # or use ->from($email1, $email2...)
transport=>Email::Sender::Transport::SMTP->new({
host => $smtpserver,
port => $smtpport,
username => $smtpuser,
password => $smtppw,
}),
);
我现在得到的错误是:
在/usr/local/share/perl/5.26.1/Email/Stuffer.pm第224行使用严格引用时,不能将字符串文本_body用作哈希引用
我不能一次创建并发送电子邮件,我必须创建电子邮件,寻找其他选项添加到其中,如抄送地址和是否需要附加文件等。我从Perl Maven获得的代码不起作用。该过程有两个组件,构建电子邮件并发送。Email::Sender只处理后者,它展示了如何使用Email::Simple来构造简单的电子邮件。要构建更高级的电子邮件(如带有附件的电子邮件),您需要功能更强大的电子邮件,并且有一个名为Email::MIME和Email::Sender的包装器,它提供了用于附加文件的简单API
use strict;
use warnings;
use Email::Stuffer;
my $mail = Email::Stuffer->to($to)->from($from)->subject($subj)->text_body($text);
$mail->attach_file('/path/to/file.txt'); # guesses MIME type
# or if you have the file data in memory
$mail->attach($contents, name => 'foo.dat', filename => 'foo.dat',
content_type => 'application/octet-stream');
# to change the transport
$mail->transport('SMTP', host => ...);
$mail->transport(Email::Sender::Transport::SMTP->new(...));
$mail->send_or_die;
这个过程有两个组成部分:构造电子邮件和发送电子邮件。Email::Sender只处理后者,它展示了如何使用Email::Simple来构造简单的电子邮件。要构建更高级的电子邮件(如带有附件的电子邮件),您需要功能更强大的电子邮件,并且有一个名为Email::MIME和Email::Sender的包装器,它提供了用于附加文件的简单API
use strict;
use warnings;
use Email::Stuffer;
my $mail = Email::Stuffer->to($to)->from($from)->subject($subj)->text_body($text);
$mail->attach_file('/path/to/file.txt'); # guesses MIME type
# or if you have the file data in memory
$mail->attach($contents, name => 'foo.dat', filename => 'foo.dat',
content_type => 'application/octet-stream');
# to change the transport
$mail->transport('SMTP', host => ...);
$mail->transport(Email::Sender::Transport::SMTP->new(...));
$mail->send_or_die;
非常感谢。这些文件并不清楚它的用途。如果我使用->发送\或\死亡,我可以在参数中指定一条错误消息,如->发送\或\死亡电子邮件无法发送@Bullrush没有,但是您可以在Perl:中很容易地捕获和重新显示异常,或者如果返回false,您可以使用->发送并自行终止。我真的必须在程序中手动指定内容类型吗?如果是,我在哪里可以找到内容类型列表?我的大多数附加到电子邮件的文件都是XLS或XLSX文件。有些文件是RTF文件。@Bullrush不,它会从文件扩展名猜出来,但是显式还是个不错的主意。这里列出了许多常见类型:@bullush您还可以使用它在扩展和mime类型之间进行转换。谢谢。这些文件并不清楚它的用途。如果我使用->发送\或\死亡,我可以在参数中指定一条错误消息,如->发送\或\死亡电子邮件无法发送@Bullrush没有,但是您可以在Perl:中很容易地捕获和重新显示异常,或者如果返回false,您可以使用->发送并自行终止。我真的必须在程序中手动指定内容类型吗?如果是,我在哪里可以找到内容类型列表?我的大多数附加到电子邮件的文件都是XLS或XLSX文件。有些文件是RTF文件。@Bullrush不,它会从文件扩展名猜出来,但是显式还是个不错的主意。这里列出了许多常见类型:@bullush,您还可以使用它在扩展和mime类型之间进行转换。