web-dev-qa-db-ja.com

Linuxのコマンドラインからメールを転送する

Postfixサーバー(Ubuntu)で受信したMaildirに電子メールファイルがあります。選択したメールファイルを指定したメールアドレスに転送できるユーティリティはありますか?何かのようなもの:

cat emailfile | utility [email protected]

mailコマンドを使用しようとしましたが、すべての技術ヘッダー情報を含むファイルの内容全体がプレーンテキストとして送信されただけで、見栄えがよくありません。

cat emailfile | mail -s subject [email protected]

更新

具体的でなくてすみません。私が欲しかったのは、添付ファイルなしでシェルスクリプトから電子メールファイルを転送することですが、すべてのヘッダーとメタデータを削除して、人間にわかりやすい方法で表示します。 Gmailと同様に、[転送]をクリックすると、メールが自動的に適切に解析され、上部に「転送されたメッセージ」テキストが追加されてから、本文のテキストメッセージが配置されます。自分でメールファイルを解析して新しいメールを作成できることはわかっていますが、数時間節約できるユーティリティがあると思いました。

6
Evgenii

1つより多くの可能性があります。

  1. このユーティリティはsendmailと呼ばれます。 cat emailfile | sendmail -f [email protected]。これはメールを「転送」するのではなく、代わりにメールを「送信」するため、前にメールを書き直す必要があるかもしれません。
  2. Postfix自体でこれを行います。 Postfixにすでに存在する多くの可能性を使用して、ローカルユーザーにメールを送信し、さらに他のユーザー(ローカルおよび/またはリモート)にメールを送信することができます。手がかり:*_alias_maps
5
mailq

mail [email protected] < mailfileメールの本文をファイルの内容にします。それがうまくいかない場合は、おそらく独自に記述する必要があります。

これは Python 2.7ライブラリのドキュメント から取得されます:

# Import smtplib for the actual sending function
import smtplib

# Here are the email package modules we'll need
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart

COMMASPACE = ', '

# Create the container (outer) email message.
msg = MIMEMultipart()
msg['Subject'] = 'Our family reunion'
# me == the sender's email address
# family = the list of all recipients' email addresses
msg['From'] = me
msg['To'] = COMMASPACE.join(family)
msg.preamble = 'Our family reunion'

# Assume we know that the image files are all in PNG format
for file in pngfiles:
    # Open the files in binary mode.  Let the MIMEImage class automatically
    # guess the specific image type.
    fp = open(file, 'rb')
    img = MIMEImage(fp.read())
    fp.close()
    msg.attach(img)

# Send the email via our own SMTP server.
s = smtplib.SMTP('localhost')
s.sendmail(me, family, msg.as_string())
s.quit()

ここでの唯一の実際の変更は、MIMEImage ...の代わりにemail.mime.image.MIMEApplicationクラスを使用し、もちろんto、from、subjectフィールドを適切なものに変更することです。

3
Allen