2

MIME::Liteやその他のライブラリを使用せずに Perl でメール メッセージにファイル (特に .csv ファイル) を添付する方法があるかどうか疑問に思っていました。

現在、問題なく動作する「メーラー機能」がありますが、ファイルを添付する方法がわかりません。これが私が持っているものです:

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特有のものだと思います。

4

6 に答える 6

12

すでに存在するコードを書きたいのはなぜですか? バグを再現して自分でより多くのコードを保守するよりも、タスクを解決するためのはるかに優れた方法がおそらくあるでしょう。モジュールのインストールに問題がありますか? コードと一緒にサードパーティ モジュールを配布する方法もあります。

自分でやりたい場合は、モジュールが行うのと同じことを行うだけです。コードを見るだけで、彼らが何をしたかを確認できます。あなたはそれをするだけです。やっぱりオープンソースです。:)

于 2009-05-26T15:29:25.277 に答える
7

共有ホスティングを使用していて追加のライブラリをインストールできないことが問題の一部である場合、それらは通常、ローカル ライブラリ (例: ~/lib) にインストール (およびそこから使用) できます。ここにそのための手順があります(「システムにモジュールをインストールする権限がありません!」の下)。

于 2009-05-26T15:31:54.787 に答える
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! :( , $! $@");

perldoc -f 開く

于 2009-05-26T15:22:07.273 に答える
1

例 - zip ファイルを添付ファイルとして電子メールで送信します。

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'
于 2015-03-10T09:28:20.470 に答える
1

メールヘッダーを次のように指定できます。

Content-Type ie: image/jpeg; name="file.jpg"
Content-Disposition (つまり) 添付ファイル。filename="name.jpg"
Content-Transfer-Encoding (すなわち) base64

添付ファイル付きで送信された電子メールを見てください。

トリックはマルチパート境界です。
http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html

于 2009-05-26T15:23:12.497 に答える
-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);
于 2010-05-21T12:27:19.363 に答える