【问题标题】:Sending email attachment using uuencode and mailx使用 uuencode 和 mailx 发送电子邮件附件
【发布时间】:2013-12-31 19:12:12
【问题描述】:

我正在尝试让我的家庭网络上的系统通过电子邮件发送图像 (.png)。我得到的最接近的是:

uuencode -m snapshot.png snapshot.png | mailx -r "sending@myremoteserver.net" -s "Snapshot" -S smtp=smtp.myremoteserver.net me@myremoteserver.net

哪个邮件给我,但输出还有一些不足之处......

begin-base64 755 snapshot.png
AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
(well, you get the idea...)
AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
====

问题是,我必须通过 smtp.myremoteserver.net 发送。但是我的邮件客户端没有对图像文件进行解码(我在 Thunderbird 和各种网络邮件界面中尝试过,结果相同)。有没有更好的实际工作方式?

更新:只是为了好玩,我运行了这个:

uuencode -m snapshot.png snapshot.png > coded.txt

解码后,我得到了一个乱七八糟的、看不见的烂摊子。所以问题肯定出在uuencoding上。

【问题讨论】:

  • 如您所见,文件数据现在保存为“uuencode”d 转换。您必须使用 uudecode snapshot.png 将其恢复为真正的 png 文件(您可能知道)。根据您的操作系统,可能有一个工具可以为您处理部分或全部转换,否则您将需要一个丑陋的手动过程(可能是可编写脚本的)。祝你好运。
  • 不幸的是,当我真正正确发送时,接收端将无法使用uudecode。因此,我认为我需要一个不同的解决方案。
  • 我没有收到你的更新。 coded.txt 文件中不应该有任何内容,而且我的 linux 没有安装 uuencode :-(。但正如你所说,如果你的最终系统不支持 uuencoded 文件,那么在这里寻找sendmailmimetype 解决方案。祝你好运。

标签: bash email attachment mailx


【解决方案1】:

在我以前的工作中,mailx 程序在-a 中内置了一个附件选项。

来自http://linux.die.net/man/1/mailx

-一个文件

将给定的文件附加到消息中。

那么您不必担心uuencode 的东西。我相信您也可以添加多个-a 选项来发送多个附件。

不确定这个选项出现在哪个版本(我新工作的服务器没有)。

【讨论】:

  • 似乎是一个不同的 mailx 实现。从我的手册页:-a, --append=HEADER: VALUE append given header to the message being sent
  • 谢谢。我见过的最简单的解决方案。适用于 Centos.6.5。
  • 适用于 Red Hat 3.10.0 谢谢。
【解决方案2】:

在 ubuntu 上,我能够成功发送带有附件的邮件

uuncode input_file1.jpg attachment1.jpg >tempfile
uuncode input_file2.jpg attachment2.jpg >>tempfile
cat tempfile | mailx -s "subject" <email>

【讨论】:

    【解决方案3】:

    我有同样的问题,并通过切换到发送 mime 类型的 sendmail 解决。

    mimencode {file} | /usr/sbin/sendmail -t -oi -f {email@domain}
    

    我在生产中没有 mimencode,所以我使用了看起来相同的 openssl:

    /usr/bin/openssl base64 -e < {file} | /usr/sbin/sendmail -t -oi -f {email@domain}
    

    如果您有更多的收件人或主题,您可以在管道的开头输入,并在末尾附加 mimencode 输出,例如,

    To: {email1} {email2}
    Cc: {email3}
    Subject: some subject
    Mime-Version:1.0
    
    
    Content-Type: text/plain
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment; filename={filename}
    {mimencode output here}
    

    您可以将所有这些输出到一个文件,然后 cat 到 sendmail 管道。

    【讨论】:

      【解决方案4】:

      你只需要去掉“-m”选项。它在 Solaris 10 上作为发件人工作,在 Outlook/lotus_notes 上作为邮件客户端工作。

      使用“-m”显示“begin-base64 ...”,没有“-m”显示正常附件。

      试试:

      uuencode snapshot.png snapshot.png | mailx -r "sending@myremoteserver.net" -s "Snapshot" -S smtp=smtp.myremoteserver.net me@myremoteserver.net
      

      希望对你有帮助。

      【讨论】:

        【解决方案5】:

        阅读:https://support.microsoft.com/en-us/kb/2590107

        你应该使用 mimencode。

        Mimencode 旨在替代 uuencode 用于邮件和新闻用途。原因很简单:uuencode 在许多情况和方式下都不能很好地工作。特别是,uuencode 使用的字符不能在所有邮件网关(特别是 ASCII EBCDIC 网关)之间很好地转换。此外,uuencode 不是标准的——有几种变体,以不同且不兼容的方式对事物进行编码和解码,没有“标准”作为实现的基础。最后,uuencode 在管道中通常不能很好地工作,尽管已经修改了一些变体来做到这一点。 Mimencode 实现了为 MIME 定义的编码作为 uuencode 替换,并且对于电子邮件使用应该更加健壮。

        【讨论】:

          【解决方案6】:

          uuencode /pth/to/atch.jpg sendasname.jpg | mailx -s "主题" mail@mail.com

          应该没问题 - 在 solaris 中定期使用它。

          只需要省略 -m 开关即可。

          【讨论】:

            【解决方案7】:

            怎么样

            (uuencode -m snapshot.png snapshot.png) | mailx -r "sending@myremoteserver.net" -s "Snapshot" -S smtp=smtp.myremoteserver.net me@myremoteserver.net
            

            【讨论】:

            • 同样的结果,不幸的是。无论出于何种原因,我都没有从另一侧获得可见的图像。
            • 这里唯一的区别是将uuencode包围在子shell(parens)中吗?如果是这样,您是否测试过这个答案?我不明白它是如何工作的。祝大家好运。
            • 显然如此。经测试,结果相同。当然,根据我的更新,编码文件也不会正确解码。当我得到这个工作时,接收端无论如何都无法解码文件。
            猜你喜欢
            • 2014-08-09
            • 2010-09-10
            • 2016-08-16
            • 1970-01-01
            • 2017-08-10
            • 2020-06-02
            • 2012-12-31
            • 2013-03-12
            • 2014-05-27
            相关资源
            最近更新 更多