perl - Email::Sender 如何在 Perl 中附加文件?
问题描述
系统:Ubuntu 18.04 LTS 上的 Perl 5.26.1。在名为 util2.pl 的文件中有一个用于发送电子邮件的子例程。该子例程称为 mailadming() 并具有一堆参数,例如 SMTP 服务器信息、往返地址等。 util2.pl 被require
放入主程序中。
我在各种网站和 Google 上搜索了大约 2 个小时,并阅读了有关 Email::Sender 的手册,但在使用 Email::Sender 时我似乎找不到如何附加文件。我正在升级一台机器,并且正在使用 Mail::Sender,但 Mail::Sender 对于 Email::Sender 已弃用,并且 Email::Sender 上的文档很少。
我在 Email::Sender docs 中根本找不到有关文件附件的任何信息。
由于 Mail::Sender 不再更新,继续使用它是个坏主意。我们在 Perl 上投入了大量资金,所以目前我们无法更改工具。
- 谁能帮帮我?
- 我应该为 Perl 使用另一个电子邮件模块吗?Email::Sender 似乎是最经常和最近更新的。
编辑:这是我到目前为止的代码:
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,
}),
);
我现在得到的错误是:
Can't use string ("text_body") as a HASH ref while "strict refs" in use at /usr/local/share/perl/5.26.1/Email/Stuffer.pm line 224.
我不能只创建电子邮件并一次性发送,我必须创建电子邮件,寻找其他选项添加到它(如抄送地址以及是否需要附加文件)等等。我得到的代码来自 Perl Maven 只是不起作用。
解决方案
该过程有两个组件,构建电子邮件和发送电子邮件。Email::Sender 只处理后者,它展示了如何使用 Email::Simple 来构造简单的电子邮件。要构建更高级的电子邮件,例如带有附件的电子邮件,您需要更强大的Email::MIME,并且有一个 Email::MIME 和 Email::Sender 的包装器,称为Email::Stuffer,它提供了用于附加文件的简单 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;
推荐阅读
- python - 根据用户输入对数组元素进行排序
- python - 如何在 matlab 中进行日志记录:类似于 python 的日志记录
- c# - 从 StreamReader 到 List 的数组字符串
在 C# 中 - python - 获取属于某个模型的开发人员
- c - 如何找到两个区间之间的素数?我做了一个,但这不起作用
- javascript - 我有一个分页问题,将其与 nanoscroller 相结合
- javascript - 填充其他文本框后删除所需属性
- reactjs - 反应更清洁的方式来提升状态
- arrays - 致命错误:索引超出范围 / UIPickerView /Array/ Swift
- flutter - Flutter Animated Builder with Provider 以显示来自 URL 的图像