Назад | Перейти на главную страницу

Переслать электронное письмо из командной строки в Linux

В моем Maildir есть файлы электронной почты, полученные с помощью сервера postfix (Ubuntu). Есть ли утилита, которая может пересылать выбранный файл электронной почты на указанный адрес электронной почты? Что-то вроде:

cat emailfile | utility to@address.com

Я пытался использовать почта команда, но она просто отправила все содержимое файла, включая всю техническую информацию заголовка, в виде простого текста, что выглядит не очень хорошо.

cat emailfile | mail -s subject to@address.com

Обновить

Извините за неточность. Я хотел переслать файл электронной почты из сценария оболочки без вложений, но удалить весь заголовок и метаданные и представить их в удобной для человека форме. Как и в gmail, когда вы нажимаете «переслать», он автоматически анализирует электронное письмо, добавляет вверху текст «перенаправленное сообщение», а затем помещает основной текст сообщения. Я знаю, что могу сам проанализировать файл электронной почты и создать новое письмо, но я подумал, что есть утилита, которая может сэкономить мне пару часов.

Возможностей больше, чем одна.

  1. Эта утилита называется sendmail. cat emailfile | sendmail -f to@address.com. Возможно, вам придется перед этим переписать почту, так как это не «пересылает» почту, а вместо этого «отправляет» почту.
  2. Сделайте это в самом Postfix. Вы можете использовать множество возможностей, уже представленных в Postfix, для отправки почты локальному пользователю и, дополнительно, другим (локально и / или удаленно). Ключ к разгадке: *_alias_maps

mail to@address.com < 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()

Единственное реальное изменение здесь заключается в том, что вы будете использовать класс email.mime.image.MIMEApplication вместо MIMEImage ... и, конечно же, измените поля to, from и subject на что-то подходящее.