如何从命令行通过后缀发送带附件的电子邮件?

Mic*_*Mao 11 linux email command-line postfix ubuntu

我刚刚在 linode 上为自己设置了一个新的 Ubuntu 10.04 LTS 服务器。按照以下出色的说明进行操作:here to finish the installation of some basic stuff including postfix.

我试图找出一种方法,将带有附件的电子邮件发送到我的 gmail 地址,但找不到方法。已经确认电子邮件可以到达我的 gmail 帐户。

最后我必须使用 mutt 来发送带有附件的电子邮件,可能SendEmails也可以做得很好,但我想知道如何从命令行在 postfix 中做同样的事情?

非常感谢您提出这个愚蠢的问题。

use*_*686 15

为什么一定要postfix直接呢?mailx -a, mutt, ormutt -a也将使用该sendmail接口——除非为 SMTP 配置它们。

echo "这是一条测试消息" | mutt -s 测试 -a foo.zip -- $USER
echo "这是一条测试消息" | 邮件 -s 测试 -a foo.zip $USER

(注意,在 bsd-mailx 中,该选项是-A相反的。)


无论如何,这是一个“后缀”示例。

替换$USER、内容类型和文件名以匹配您的环境。示例假设您正在向自己发送消息,并且foo.zip当前目录中有一个 ZIP 文件。

(printf "%s\n" \
    "Subject: test" \
    "To: $USER" \
    "Content-Type: application/zip" \
    "Content-Disposition: attachment; filename=foo.zip" \
    "Content-Transfer-Encoding: base64" \
    "";
 base64 foo.zip) | sendmail "$USER"
Run Code Online (Sandbox Code Playgroud)

(创建 MIME 多部分消息作为练习留给读者。)


Gil*_*il' 7

Postfix 是一个邮件传输代理 (MTA)。它的工作是处理邮件的传递:捡起它并将其发送到其路线上的下一个点。Postfix 是一名邮政工人,其工作是取信封并(在同事的帮助下)将其运送给收件人。

你在这里要求的是秘书工作:组装文件并将它们放入信封。这不是 Postfix 的工作:这是邮件用户代理 (MUA) 的工作。你可以像grawity 一样编写一个简单的 MUA,它只是在几行 shell 中组装碎片来制作邮件,但 Mutt 确实是完成这项任务的好工具。


小智 6

在命令行中,我喜欢使用“sendemail”,它可以在 ubuntu/debian 上从命令行安装,如下所示:

apt-get install sendemail
Run Code Online (Sandbox Code Playgroud)

然后您可以简单地告诉它使用 localhost (Postfix) 作为 MTA。

实际上我只是注意到 localhost:25 是默认的:

-s SERVER[:PORT]          smtp mail relay, default is localhost:25
Run Code Online (Sandbox Code Playgroud)

然后使用 -a 标志添加附件:

sendemail -f sender@example.com -t recipient@example.com -m "This is the message" -u "This is the subject" -a file1.zip file2.zip
Run Code Online (Sandbox Code Playgroud)