Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
电子邮件::发件人如何在Perl中附加文件?_Perl_Email_Email Attachments - Fatal编程技术网

电子邮件::发件人如何在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

系统: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使用另一个电子邮件模块吗?电子邮件::发件人似乎是更新最频繁和最新的。 编辑:这是我到目前为止的代码:

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类型之间进行转换。