嘿,我想知道是否有办法在不使用MIME::Lite或任何其他库的情况下将文件(特别是.csv文件)附加到Perl中的邮件消息。
现在,我有一个“邮件程序功能”可以正常工作,但我不确定如何使其适应附加文件。这就是我所拥有的:
open(MAIL, "|/usr/sbin/sendmail -t");
print MAIL "To: cheese\@yahoo.com\n";
print MAIL "From: queso\@what.com\n";
print MAIL "Subject: Attached is $filename\n\n";
print MAIL "$message";
close(MAIL);
我认为这是针对UNIX的。
答案 0 :(得分:12)
为什么要编写已经存在的代码?可能有一种更好的方法来解决您的任务,而不是重新创建错误并自己维护更多的代码。你在安装模块时遇到问题吗?您也可以使用代码分发第三方模块。
如果你想自己做,你只需要做模块为你做的事情。你可以看一下代码,看看他们做了什么。你这样做。毕竟它是开源的。 :)
答案 1 :(得分:7)
如果您的部分问题是您在共享主机上并且无法安装额外的库,则它们通常可以安装在本地库(例如,〜/ lib)中(并从中使用)。有here以上的说明(在“我没有权限在系统上安装模块!”)。
答案 2 :(得分:2)
让您的生活更轻松的一般风格提示:
即:
open my $mail, '|-', '/usr/sbin/sendmail', '-t' or Carp::croak("Cant start sendmail, $! $@");
print $mail "foo";
close $mail or Carp::croak("SendMail might have died! :( , $! $@");
答案 3 :(得分:1)
您可以将邮件标题指定为:
Content-Type ie:image / jpeg; NAME = “file.jpg”
内容 - 处置(即)附件;文件名= “name.jpg”
内容传输编码(即)base64
查看附带附件的电子邮件,该邮件可以帮助您解决问题。
诀窍是多部分边界 http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html
答案 4 :(得分:1)
示例 - 将压缩文件作为附件发送电子邮件:
base64 /path/to/my/file.zip | mail -s "Subject" recipient@mydomain.com -a 'Content-Type: application/zip; name="myfile.zip"' -a 'Content-Disposition: attachment' -a 'Content-Transfer-Encoding: base64'
答案 5 :(得分:-1)
print "To: "; my $to=<>; chomp $to;
print "From: "; my $from=<>; chomp $from;
print "Attach: "; my $attach=<>; chomp $attach;
print "Subject: "; my $subject=<>; chomp $subject;
print "Message: "; my $message=<>; chomp $message;
my $mail_fh = \*MAIL;
open $mail_fh, "|uuencode $attach $attach |mailx -m -s \"$subject\" -r $from $to";
print $mail_fh $message;
close($mail_fh);