一份菜单

如何从Linux发送带有附件和正文的电子邮件

:如何从Linux命令行(或Shell脚本)发送带有附件的电子邮件?另外,我可以通过Linux命令行在电子邮件中同时发送附件和正文吗?

回答注意:可以从Linux命令行发送附件和正文文本(或仅发送带有主题行的附件),如下所述。

1. Send an 电子邮件 with 学科 and Body

通常,您将从Linux命令行发送一封电子邮件,其中包含主题行和正文,如下所示。请注意,您应该输入。 (句号)用单独的一行表示文本的正文已结束。

$ mail 内存[email protected]
Subject: 电子邮件 Testing from Linux
Dear,

It is very easy to send an 电子邮件 from Linux command line. 

Thanks, Ramesh
.
Cc: 内存[email protected]

如果要从文件(例如,body-message.txt)中读取正文,请发送电子邮件,如下所示。

$ cat body-message.txt |邮件-s"从Linux进行电子邮件测试" 内存[email protected]

2.发送带有附件的电子邮件

要从电子邮件发送附件,请使用uuencode命令。在RedHat(及相关发行版)上,uuencode是sharutils软件包的一部分。因此,如下所示安装sharutils。

# rpm -ivh sharutils-4.6.1-2.i386.rpm
Preparing...        ############################## [100%]
   1:sharutils      ############################## [100%]

一旦您’ve confirmed that you have uuencode, send the 电子邮件 with an 连接ment as shown below.

$ uuencode input-attachment.txt output-attachment.txt | \
mail -s "电子邮件 With Attachment" 内存[email protected]

在这个例子中

  • input-attachment.txt is the file that you like to 连接 to the 电子邮件.
  • 如果您希望使用其他名称附加文件,请将其指定为uuencode的第二个参数。在此示例中,intput-attachment.txt文件的内容将作为output-attachment.txt附加。

Note: uuencode can also be used to send base64 连接ments as shown below.

$ uuencode -m input-attachment.txt output-attachment.txt | \
mail -s "电子邮件 With Base64 Attachment" 内存[email protected]

3.发送带有附件和正文的电子邮件

You can send an 电子邮件 with both 连接ment and body message as shown below.

$ ( cat body-message.txt; uuencode input-attachment.txt output-attachment.txt ) \
| 邮件-s"电子邮件 With Body Text and Attachment" 内存[email protected]

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

Bash 101 Hacks书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 28 评论… 加一 }

  • 基安 2009年12月30日,上午3:14

    我发现sendEmail更舒适,更轻松

    sendEmail -a

    sendEmails在Ubuntu上具有二进制包,例如

  • az 2009年12月30日,上午3:15

    Erm大多数人可能必须先设置邮件?

    send-mail: 能够not open mail:25
    能够’t发送邮件:sendmail处理失败,错误代码为1

  • 克里斯·约翰逊 2009年12月30日,上午5:18

    “$ cat body-message.txt |邮件-s“从Linux进行电子邮件测试” 内存[email protected]

    联合会

    邮件-s“从Linux进行电子邮件测试” 内存[email protected] < body-message.txt

  • k 2009年12月30日,上午5:21

    当我使用上述命令发送邮件时,我收到两封邮件
    One mail with body and another mail with body and 连接ment.
    我们需要为邮件配置任何设置吗?

  • 马赫什 2009年12月30日,上午7:21

    I have found mutt to be a lot useful for sending 连接ment.

  • 埃德·德洛伊 2009年12月30日,上午7:46

    您可以使用mutt做同样的事情:

    mutt -s‘subject’-i file1 -a file2 -c user1 @ domain -b user2 @ domain user3 @ doman</dev/null

    -s Specify the 学科 of the message.
    -i指定要包含在消息正文中的文件。
    -a使用MIME将文件附加到您的消息中。
    -c指定抄送(CC)收件人
    -b指定密件抄送(BCC)收件人

    The redirect from / dev /空 prevents mutt from going into interactive mode

  • 约翰 2009年12月30日,上午10:46

    我已经使用了一个小应用程序很长时间了“email” from http://www.cleancode.org/projects/email ..它易于编译,并为我提供了很好的服务。它将使用您最喜欢的控制台编辑器来编写正文文本,非常轻松地附加文件,从文件正文文本中提取猫文本,在需要时使用sig行,而且我相信它甚至具有简单的地址簿和一些其他技巧,例如多个附件很简单

    我几乎只从脚本中使用它,将配置和内容备份到文件转储电子邮件地址

  • 弗兰克·戴利 2009年12月30日,下午3:25

    我认为杂种狗要简单得多。例如,它可以安装在Fedora上

    yum -y install mutt

    要使用它很简单

    mutt -s“Subject text” 电子邮件address < filetosend.odt

  • 费利瓦尔瓦雷斯 2010年1月3日,晚上10:47

    邮件-s学科 电子邮件@domain < filetosend
    base64 filetosend | 邮件-s学科 电子邮件@domain

    以上两个不'attach'要发送的文件。相反,它们位于消息的正文中。为什么是这样?

    使用opensuse 11.2(后缀)

  • 西尔维·马林·凯亚 2010年1月5日,上午2:58

    在opensuse 11.2上执行以下操作:
    回显文字正文|邮件-s“Subject line” -a 连接ment.txt [email protected]

  • 英秋 2010年1月15日,上午3:57

    猫-uuencode-和-派是相当la脚的。应该有一些工具可以对邮件进行正确的MIME打包。

  • 卡尔 2010年1月25日,上午11:29

    怎么样

    cat mail.txt | mutt -a 连接ment -s 学科 [email protected]

  • 马丁 2010年10月7日,上午9:07

    谢谢你通过电子邮件发送附件和正文文件的最后一部分正是我所需要的。我们’从AIX迁移到Linux,我需要找到metasend的替代产品。我们有很多使用metasend的程序。现在,我没有更改60个程序,而是有60行脚本来解析metasend命令中的信息,并将其传递给uuencode和mail。太棒了

    再次感谢,

    马丁

  • 网络工程师 2011年2月24日,上午6:26

    你好

    首先恭喜你女儿’的诞生。要快乐,要安全。我有一个有关后缀的问题。我想监视我的域的一个电子邮件用户。例如我想监视 [email protected] 它发送了多少电子邮件,成功发送了多少电子邮件,拒绝了多少电子邮件以及有多少次延迟了电子邮件。现在,我有了一个脚本,该脚本对我来说效果很好,并提供给我输出,例如发出了总数为ne @ xyz..com的总数量,拒绝了多少,有多少没有用。一世’我要在这里与您分享此脚本。我要添加到此脚本的是它应该给我被拒绝的电子邮件地址。你知道我的意思。目前它告诉我该用户发送了750封电子邮件。 200个被拒绝100个被拒绝等,我想知道哪些电子邮件地址被拒绝了。因此,如果200个被拒绝,它也应该给我200个电子邮件地址,这样我就可以查看是否存在拼写错误或其他错误。这是脚本。请看看这个。或者,如果您知道要监视此软件的任何其他软件,请告诉我。我想监视正在发送新闻通讯的postfix用户。我想报告发送了多少,拒绝了多少,递减了多少,等等。这些都拒绝了电子邮件。

    这是我正在使用的脚本,但它’不能拒绝邮件。只是计数。

    #!/ usr / bin / perl
    #vim:ts = 2:sw = 2:expandtab:cindent

    ###修改日期和发送电子邮件地址###

    #$ date =”Oct 14[5-9]”;
    $ date =”Dec 18″;
    #$ sender =”(.*)\@domain.com”; #匹配domain.com中的任何发件人
    #$ sender =”username\@domain.com”; # Matches [email protected]
    $ sender =”user\@domain.com”; # Matches [email protected]

    ###用户修改结束###

    $ sent = 0;
    $ bounced = 0;
    $ deferred = 0;

    $ logFile =”/var/log/maillog”;
    打开LOGFILE,“<", $logFile;
    @rawLogs =;
    关闭LOGFILE;

    $ date =〜s / ^([A-Z] [a-z] {2})()([0-9])$ / $ 1 $ 3 /;
    printf(“%s %s\n”,$sender, $date);

    如果(grep(/(^ [A-Z] [a-z] {2} [0-9])$ /,$ date)){
    $ field = 6;
    }其他{
    $ field = 5;
    }

    @logs = grep(/ $ date。* postfix \ / qmgr \ [[0-9] + \]:。* from = / i,@rawLogs);
    foreach(@logs){
    @line = split(/ /);
    push(@msgIds,$ line [$ field]);
    }

    @sent = grep(/ status = sent /,@rawLogs);
    @bounced = grep(/ status = bounced /,@rawLogs);

    @ids = grep {定义}映射{
    如果(存在$ u {$ _}){
    undef;
    }其他{
    $ u {$ _} = undef; $ _;
    }
    } @msgIds;

    undef%u;

    $i=0;
    $ cnt = $#ids + 1;
    foreach $ id(@ids){
    $ final = 0;
    如果(grep(/ $ id /,@sent)){
    $ sent ++;
    $ final = 1;
    } elsif(grep(/ $ id /,@bounced)){
    $ bounced ++;
    $ final = 1;
    }
    如果($ final!= 1){
    $ deferred ++;
    }
    $ i ++;
    }
    打印“已发送的邮件:$ sent \ n”;
    打印“被退回的邮件:$ bounced \ n”;
    打印“延迟的邮件:$ deferred \ n”;
    打印“Total Sent: “。 ($ sent + $ bounced + $ deferred)。”\n”;

  • 大卫·比彻(David Beecher) 2012年6月10日,下午12:17

    这种附加文件的方法hasn’工作了很长时间。如今,很少有人(一次忽略)可以识别和解码嵌入的UUENCODED数据,甚至更少的客户端可以识别UUENCODED消息中的base64编码。

    这个 链接具有更好的答案,并且根据您的环境有多种变体。

    祝好运,
    大卫

  • 内存 2012年8月2日,下午1:40

    你好

    感谢它的帮助…..

    感谢分享

    -内存

  • 库尔迪派克 2012年9月23日,上午6:30

    我是Linux新手,我使用mail命令使用linux命令将文件从linux机器发送到我的电子邮件帐户。

    但是将电子邮件发送到我的电子邮件帐户需要花费太多时间。

    任何人都可以帮助我,以缩短从linux机器发送和接收电子邮件之间的延迟时间。

    我需要紧急帮助。

    我会非常感谢你们。

  • 阿肖克 2012年10月12日,上午10:37

    您的帖子非常有帮助…
    非常感谢您分享这些信息。

  • 斯特凡 2012年10月24日,上午10:01

    有人阅读手册页吗?
    如果您有更新版本的sendmail,则可以使用-a

    回声“Body text” |mail -s “Subject”-a /var/tmp/file.txt [email protected]

  • 拉胡尔·古普塔(Rahul Gupta) 2013年2月16日,下午12:13

    嗨朋友

    我在命令下运行发送邮件。但是收件箱中没有收到邮件。

    请帮我解决这个问题。

    “echo “file_to_send” | nail -s “Your File” -a mail_id.txt [email protected]

    昨天我运行了相同的命令,然后它为我工作。问题发生后,我刚刚重启了fedora机器。请帮助我是否需要调整某些设置或其他任何内容。

    提前致谢..

  • az 2013年2月17日,上午4:37

    @拉胡尔

    sendmail或postfix是否正在运行?
    服务sendmail状态
    服务后缀状态

    是或否(如果否),然后启动它们
    服务sendmail开始
    接下来是重启后开始吗
    chkconfig–list |egrep “sendmail | postfix”

    是否如果否,则开始安装您安装的任何一个
    chkconfig–level 35 sendmail 上

    仍然有问题,请在mailq中查看
    邮件

    或查看/ var / log / maillog以查看任何错误

  • 拉胡尔·古普塔(Rahul Gupta) 2013年2月17日,上午10:31

    嗨,HDaz,

    谢谢你的帮助。

    我看到了我的“/var/spool/mail/root”记录以下错误播种

    ” The IP you’re using to send 电子邮件 is not authorized…”

    请帮我解决这个问题

    提前致谢

  • az 2013年2月17日,上午10:33
  • 拉胡尔·古普塔(Rahul Gupta) 2013年2月17日,上午10:44

    嘿,
    谢谢。
    现在我可以发送邮件了。

    但是我所有的邮件都是垃圾邮件。

    现在我该怎么做才能将其放入收件箱而不是垃圾邮件,

  • 乔治 2014年3月7日,下午5:41

    Excelent , the solution to send a mail including an 连接ed file, was great. Really Thank you.

    成功

  • 尼特什 2014年6月30日,上午5:58

    效果很好。我正在垃圾邮件文件夹中接收邮件。这与sendmail配置有关吗?如果是这样,我应该采用什么配置。

    谢谢你的帖子。它帮助了ðŸ™,

  • 马特 2015年3月17日,上午9:26

    我必须从显示如何发送附件和正文的第三个示例中删除()和\。为我工作!

  • 拉古 2015年10月28日上午9:26

    出色的工作Ramesh!它像魔术一样工作。

发表评论