环境

本机安装sendmail了, 但是没有启动. 其他机器上有mail server, 并且已经把本机加到open relay列表中了, 可以通过该mail server发送邮件。
做法如下:
1. 安装 sendmail-cf 软件包
2. 修改 /etc/mail/submit.mc

 FEATURE(`msp'', `[127.0.0.1]'')dnl
 修改为
 FEATURE(`msp'', `[Your mail server ip]'')dnl

3. 在 /etc/mail/ 目录下执行 make

测试

mail -s ''hello world!'' user1@chxbd.com

mail -s ''hello world!'' user1@chxbd.com < "包含邮件文本内容的文件"

附件
1. 安装软件包 sharutils (使用其中的uuencode工具)
2. 把要发送的若干附件通过uuencode处理后整合到一个文件中(如attach.tmp)
3. 如果同时发送文本内容,把文本内容直接追加到附件文件中。
    如果文本与附件交叉追加,只有第一次追加的以邮件正文显示,后续追加的会以txt文件的形式放到附件里。

4. 以 mail -s ''hello world!'' user1@chxbd.com < attach.tmp 的形式发送邮件
在邮件客户端显示时会自动把邮件正文和附件区分开

发件人
默认的发件人是当前登录用户的名称,如果未设置hostname,将在客户端显示为 user1@localhost.localdomain而被标记为垃圾邮件。
解决:
1) 设置 hostname
    如果 hostname 为 sina.com,则发件人将显示为 user1@sina.com
2) 修改 /etc/hosts
    在 127.0.0.1 对应的条目中(ipv4),在最前面(localhost.localdomain和localhost前,其中localhost.localdomain必须存在)添加主机名
    如:   
    #127.0.0.1    localhost.localdomain  localhost
    127.0.0.1    126.com   localhost.localdomain  localhost
    发件人将显示为 user1@126.com
如果 hostname 和 /etc/hosts 文件同时设置,而hostname又未在/etc/hosts中设置,则hostname 优先;
如果把自定义的域名和hostname同时设置在 /etc/hosts 中,则使用最前面的那个,如:
   127.0.0.1 126.com   node1.test.com   localhost.localdomain   localhost
126.com是发件人要显示的域名,node1.test.com 是 hostname 命令得到的主机名。
如此看来,发件人的域名与 hostname 命令得到的主机名有关,如果 hostname 命令得到的主机名在 /etc/hosts 中没有对应条目,则使用 hostname 得到的主机名,如果设置在了 /etc/hosts 中,则采用对应条目中的第一个主机名/域名。

linux 命令行发送邮件及附件的更多相关文章

  1. [原]Linux 命令行 发送邮件

    1.mail -s hi xx@yy.com 给xx@yy.com发一封主题为hi的信(没有正文) 编辑完内容后Ctrl-D结束. 2.echo "This is a test mail!& ...

  2. Linux 命令行 发送邮件

    1.mail -s hi xx@yy.com 给xx@yy.com发一封主题为hi的信(没有正文) 编辑完内容后Ctrl-D结束. 2.echo "This is a test mail!& ...

  3. Linux命令行技巧

    Linux命令行技巧 命令 描述 • apropos whatis 显示和word相关的命令. 参见线程安全 • man -t man | ps2pdf - > man.pdf 生成一个PDF格 ...

  4. 像黑客一样使用 Linux 命令行

    前言 之前在博客园看到一篇介绍 IntelliJ IDEA 配置的文章,它里面用的是 gif 动态图片进行展示,我觉得很不错.所以在我今天以及以后的博文中,我也会尽量使用 gif 动图进行展示.制作 ...

  5. 详解Linux命令行下常用svn命令

    1.Linux命令行下将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/do ...

  6. linux 命令行 光标移动技巧

    linux 命令行 光标移动技巧 看一个真正的专家操作命令行绝对是一种很好的体验-光标在单词之间来回穿梭,命令行不同的滚动.在这里强烈建立适应GUI节目的开发者尝试一下在提示符下面工作.但是事情也不是 ...

  7. 在linux命令行下执行php 程序

    如何在linux命令行下,执行php程序. 例子 打印当前时间 php -r "echo time()" 随机输出一个数字 php -r "echo rand(1,20) ...

  8. git代理,windows命令行代理,linux命令行代理

    下载不动设置代理:git config --global http.proxy http://127.0.0.1:1080git config --global https.proxy https:/ ...

  9. [转]12款最佳Linux命令行终端工具

    摘要 “工欲善其事必先利其器”,作为菜鸟,也是从别人那里偷学来的一些东东.今天看到同事用到一个终端命令行工具,觉得自己弱爆了.然后在网上搜了下该工具.发现类似的工具还是挺多的,只是自己不知道罢了. 原 ...

随机推荐

  1. button 禁止

    1.按钮的id为btnzhuce==> 控制按钮为禁用:  $("#btnzhuce").attr({"disabled":"disabled& ...

  2. struts2 下载时报java.lang.IllegalStateException

    -----------------------------------------struts2 下载时报java.lang.IllegalStateException---------------- ...

  3. MVC 小常识

    什么是MVC (模型 视图 控制器)? MVC是一个架构模式,它分离了表现与交互.它被分为三个核心部件:模型.视图.控制器.下面是每一个部件的分工: 视图是用户看到并与之交互的界面. 模型表示业务数据 ...

  4. kafka分布式消息队列 — 基本概念介绍

    [http://www.inter12.org/archives/818] 这个应该算是之前比较火热的词了,一直没时间抽出来看看.一个新东西出来,肯定是为了解决某些问题,不然不会有它的市场.先简单看下 ...

  5. Merge into 使用

    在进行SQL语句编写时,我们经常会遇到这样的问题:当存在记录时,就更新(Update),不存在数据时,就插入(Insert),oracle为我们提供了一种解决方法——Merge into ,具体语法如 ...

  6. wikioi 1010 过河卒

    题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点 ...

  7. 【C#】ASP.NET网页中添加单点登录功能

    背景 首先,要说明的是,原先需求定义的是,同一个账号只能同时有一个人来登录,如果另外一个登录的话,前一个登陆者就自动被踢掉.本来原先要做成存储到服务器的数据库中,但是后来如果是非正常退出的话 下次就没 ...

  8. FindMe

    https://github.com/hongdong/FindMe_Android https://github.com/hongdong/FindMe_Server https://github. ...

  9. js 参数的 引用与值传递

    js中arr的赋值不影响原数组,赋值和引用的区别 1.赋值 var a = 1; var b = a;   //赋的是a的复制值 b ++; alert(a);   //"1"   ...

  10. PHP header 的几种用法

    跳转页面 header('Location:'.$url); //Location和":"之间无空格. 声明content-type header('content-type:te ...