在 Linux 中从命令行转发电子邮件

在 Linux 中从命令行转发电子邮件

我的 Maildir 中有通过 postfix 服务器 (Ubuntu) 接收的电子邮件文件。是否有一个实用程序可以将选定的电子邮件文件转发到指定的电子邮件地址?例如:

cat emailfile | utility [email protected]

我尝试使用邮件命令,但它只是以纯文本的形式发送了包括所有技术标头信息在内的整个文件内容,看起来不太好看。

cat emailfile | mail -s subject [email protected]

更新

抱歉,我说得不具体。我想要的是从 shell 脚本转发电子邮件文件,不带附件,但删除所有标题和元数据,并以人性化的方式呈现。就像在 gmail 中一样,当您单击“转发”时,它会自动很好地解析电子邮件,在顶部添加“转发的消息”文本,然后放置正文文本消息。我知道我可以自己解析电子邮件文件并构建一封新电子邮件,但我认为有一个实用程序可以节省我几个小时。

答案1

可能性不止一种。

  1. 这个实用程序称为 sendmail。。也许您必须先重写邮件,因为这不是“转发”邮件,而是“发送”邮件。cat emailfile | sendmail -f [email protected]
  2. 在 Postfix 中执行此操作。您可以使用 Postfix 中已有的多种功能向本地用户以及其他用户(本地和/或远程)发送邮件。提示:*_alias_maps

答案2

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()

这里唯一真正的变化是您将使用类 email.mime.image.MIMEApplication 而不是 MIMEImage...当然,将收件人、发件人和主题字段更改为适当的内容。

相关内容