在命令行上 Ubuntu 下使用 mutt 和 msmtp 发送 Gmail 邮件

在命令行写email from ubuntu

参考:
     http://www.habadog.com/2011/11/23/send-mail-with-msmtp-mutt-linux
     http://www.absolutelytech.com/2010/07/17/howto-configure-msmtp-to-work-with-gmail-on-linux
msmtp 是一款专门负责邮件发送的客户端软件,基于GPL发布,支持TLS/SSL、DNS模式、IPv6、服务器端认证、多用户等特性。
其主页是 msmtp.sourceforge.net:
     Msmtp is an SMTP client with a sendmail compatible interface ...
安装
     sudo apt-get install mutt msmtp

如需要对TLS/SSL的支持,还需要安装 GnuTLS 或者 OpenSSL,官方推荐 GnuTLS (https://help.ubuntu.com/community/GnuTLS):
     sudo apt-get install gnutls-bin

另外,使用 Gmail 需要安装 ca-certificates:
     sudo apt-get install ca-certificates
msmtp 有 3 中工作模式:
     Sendmail mode (default)
     Server information mode
     Remote Message Queue Starting mode
对于发送邮件来说,使用 Sendmail mode (default) 就可以了:
      In  the  default sendmail mode, msmtp reads a mail from standard input and sends it to an SMTP server for delivery.

配置 msmtp
安装完后,编辑 msmtp 配置文件 ~/.msmtprc

    defaults
    tls on
    tls_starttls on
    tls_trust_file /etc/ssl/certs/ca-certificates.crt

    account default
    host smtp.gmail.com
    port 587
    auth on
    user [email protected]
    password mypass
    from [email protected]
    logfile ~/msmtp.log

把 [email protected] 和 mypass 替换成实际的邮箱和密码就可以了,这里密码是明文。注意,发送邮件默认是 25 端口,但是 Gmail 邮件服务商用的不是 25 端口,而是 465 或 587 端口。如果不设置端口,发送邮件会报错 "Must issue a STARTTLS command first"。logfile 如果设置的时候要注意设置访问权限,保证当前用户可写。

保存后,修改访问权限

chmod 0600 .msmtprc

如果不这样,会报错:

must have no more than user read/write permissions

测试发送邮件:

msmtp [email protected]

输入任意字符,然后按Ctrl+D退出,查看邮件是否收到。可以查看 logfile 里面的发送日志记录。

配置 mutt

查看 msmtp 安装路径

$ which msmtp

/usr/bin/msmtp

编辑 mutt 配置文件 ~/.muttrc

    set sendmail="/path/to/msmtp"
    set use_from=yes
    set realname="Your Name"
    set [email protected]
    set envelope_from=yes
    set editor="vim"

后面就可以用 mutt 写邮件后通过 msmtp 发送了。

小结

对于 msmtp 的详细介绍,可以参考 http://msmtp.sourceforge.net/documentation.html 或者 man msmtp。

文档里面提供了配置示例,包括 msmtp 配合 mutt 的配置。

时间: 2024-12-15 01:49:31

在命令行上 Ubuntu 下使用 mutt 和 msmtp 发送 Gmail 邮件的相关文章

摆脱命令行,Ubuntu下配置Android开发环境

作者:宋志辉 微博:weibo.com/askzhihui/ 安装所需工具 一.新立得 新立得(Synaptic)是Debian和Ubuntu Linux操作系统的包管理工具apt的图形化前端. 它结合了图形界面的简单操作和 apt-get 命令行工具的强大功能.您能够使用新立得安装.删除.配置.升级软件包,对软件包列表进行浏览.排序.搜索以及管理软件仓库或者升级整个系统.您能够进行一些系列操作形成操作队列,并一起执行它们.新立得会提示您可能的依赖关系(您所选择的软件包所需的额外软件包)以及您所

Linux命令行上程序执行的那一刹那!

转自:http://www.cppblog.com/cuijixin/archive/2008/03/14/44463.html by falcon<[email protected]>2008-02-15 (这一小节应该是作为<shell编程范例之进程操作>的一些补充性质的内容.) 当我们在Linux下的命令行输入一个命令之后,这背后发生了什么? 1.什么是命令行接口 用户使用计算机有两种常见的方式,一种是图形化的接口(GUI),另外一种则是命令行接口(CLI).对于图形化的接口

glance 命令行上传 image

制作一个系统镜像上传到/mnt/image目录下: centos6.5.img $ glance image-create –name centos6.5 –disk-format=qcow2 –container-format=bare –is-public=True –file=/mnt/image/centos6.5.img 解释: –name NAME 上传完镜像在openstack中显示的名称: –disk-format DISK_FORMAT 镜像格式:openstack支持的格式详

Linux服务器通过aws命令行上传文件至S3

目的Linux服务器通过AWS命令行上传文件至S3 配置打开你的AWS控制台: 连接你的Linux服务器,按照以下步骤操作: # 安装pip yum -y install python-pip   # 安装awscli pip install awscli   # 初始化配置 aws configure # 做这一步时系统会要求你输入"访问密钥ID"."私有访问密钥"."默认区域名称"."默认输出格式",前两个在创建IAM用户

Linux (rz、sz命令行)与本地电脑 命令行上传、下载文件

Linux 与本地电脑直接交互, 命令行上传.下载文件. 一.lrzsz命令行安装: 1.rpm安装:(链接: http://pan.baidu.com/s/1cBuTm2 密码: vijf) rpm -ivh lrzsz-0.12.20-22.1.x86_64.rpm 2.yum 安装: yum install lrzsz 二.命令使用: 1.发送到本地: sz 文件名 2.上传到服务器: rz -be 在弹出的框中选择文件,上传文件的用户和组是当前登录的用户

在命令行上启动genymotion虚拟机

自从有了genymotion,多机联调就解放了,一台电脑运行两个genymotion虚拟机毫无压力,不过也看用的是哪种os image,之前我以为google自己的Nexus应该最适应,哪知道开起来比sdk里模拟器还慢,后来下载了个小屏幕的motorola4.1,才真正享受了genymotion的飞速之快. 但是在mac上,genymotion的启动很成问题,点图标第一次启的是管理器,但运行好几个虚拟机后一般会把管理器关掉,可是有时候某个虚拟机挂了需要重新打开管理器,而这时再点图标居然没反应,估

Linux 在一个命令行上执行多个命令(转载)

对于单个命令执行我想大多数人都是明了的,也就是在一个命令行上执行一条命令.那对于在一行上执行多个命令怎么办呢,其实也很简单,只需在各命令之间加上特殊命令符号,我们常规使用到的有3个特殊命令符号. 1. [ ; ] 如果被分号(;)所分隔的命令会连续的执行下去,就算是错误的命令也会继续执行后面的命令. [[email protected] etc]# lld ; echo "ok" ; lok -bash: lld: command not found ok -bash: lok: co

[转]Linux 在一个命令行上执行多个命令

原文链接:   http://blog.sina.com.cn/s/blog_6238358c0100rzvd.html 对于单个命令执行我想大多数人都是明了的,也就是在一个命令行上执行一条命令.那对于在一行上执行多个命令怎么办呢,其实也很简单,只需在各命令之间加上特殊命令符号,我们常规使用到的有3个特殊命令符号. 1. [ ; ] 如果被分号(;)所分隔的命令会连续的执行下去,就算是错误的命令也会继续执行后面的命令. [[email protected] etc]# lld ; echo "o

可以在命令行或者$提示符下输入:

一个可以让公众用户进行投票和查看投票结果的站点 一个让可以进行增删改查的后台admin管理界面 在开始之前,再次重申,请确保已经安装最新版本的Django.可以在命令行或者$提示符下输入: $ python -m django --version 如果没有显示版本号,而是提示"No module named django",请返回前面的章节,参考安装Django. 一. 新建项目 进入你指定的项目保存目录,然后运行下面的命令: http://p.baidu.com/ihome/cent