SDs*_*lar 44
通过 gmail 发送单行消息的最简单的答案是使用 ssmtp
使用以下命令安装它:
sudo apt-get update
sudo apt-get install ssmtp
Run Code Online (Sandbox Code Playgroud)
编辑/etc/ssmtp/ssmtp.conf
看起来像这样:
root=rpi3abc@gmail.com
mailhub=smtp.gmail.com:465
FromLineOverride=YES
AuthUser=rpi3abc@gmail.com
AuthPass=testing123
UseTLS=YES
Run Code Online (Sandbox Code Playgroud)
像这样发送单行:
echo "Testing...1...2...3" | ssmtp myusername@gmail.com
Run Code Online (Sandbox Code Playgroud)
或者
printf "Subject: Test\n\nTesting...1...2...3" | ssmtp myusername@gmail.com
Run Code Online (Sandbox Code Playgroud)
然后,对于 *nix,您只需在几秒钟内返回提示。
检查您的 myusername@gmail.com 帐户,瞧,它就在那里!
这在发送文件时也很有效,如下所示:
cat program.py | ssmtp myotherusername@yahoo.com
Run Code Online (Sandbox Code Playgroud)
并且程序会出现在邮箱中
如果文件是一个文本文件,它可以有第一行说 Subject: xxxxxx
这可以与各种 cron 作业一起使用,可以向我发送带有指示内容的主题行的数据。
这将适用于任何准备通过标准输入管道传输到 ssmtp 的消息。
有关更多详细信息,例如保护这些文件免受其他用户的侵害等,请访问这篇文章:
如有必要,请务必查看下方Rui
关于锁定FROM:
可能在格式化消息文件中更改的地址所发布的答案。
现在,如果我能弄清楚如何以同样的方式发送短信就好了。
ssmtp
只是许多 Sendmail 包装器之一。所有这些都接受标准输入上的消息,以及可选的地址列表作为命令行参数,并且它们都提供一个名为的二进制文件sendmail
,它实现了(至少是基本功能)传统的 Sendmail 命令行 API。但正确地说,该消息需要格式良好的 RFC822 消息。至少,它应该有一个Subject:
标题。
ssmtp address@example.com <<<$'Subject: testing 1...2...3'
Run Code Online (Sandbox Code Playgroud)
(使用ssmtp
,sendmail
只是到ssmtp
.Postfix、Exim的符号链接,我相信其他所有Provides: mail-transport-agent
具有类似安排的MTA,当然sendmail
,sendmail
二进制文件是“真实的东西”除外。)
更常见的是,您可以将简单的电子邮件信息与此处的文档拼凑在一起。
/usr/lib/sendmail -oi -t <<____HERE
Subject: testing
To: recipient@example.net
Here we interpolate the shell variable $result
____HERE
Run Code Online (Sandbox Code Playgroud)
(Sendmail-t
选项表示从您在标准输入上收到的邮件标题中获取收件人列表。Sendmail 的精确路径因平台而异。)
另一个常见的变体是组合几个命令的输出。注意标题和消息正文之间有一个空行(“脖子”)。
( printf "Subject: random number\n\n"
dd if=/dev/urandom bs=4 count=1 2>/dev/null | od -D -An ) |
sendmail elsewhere@example.org
Run Code Online (Sandbox Code Playgroud)
对于非常简单的 ASCII 纯文本消息之外的任何内容,您需要了解如何编写正确的 MIME 消息,此时使用像mutt
. 一些平台有一个mail
ormailx
知道如何发送附件和非 ASCII 文本,但这不是完全可移植的。
这里的挑战不是找到可以接收电子邮件并尝试发送它的客户端,而是针对 Gmail 的具体情况对其进行配置,这需要 MTA 知道用于远程服务器的用户名和密码,以便于能够将其用作传出智能主机。
在幕后,大多数客户端(如mutt
、mailx
等)通常只是sendmail
在幕后运行以从系统中获取消息。
添加到OP自己的答案:
配置时ssmtp
,也可以禁止或允许用户定义From,也可以覆盖域;您可能出于多种原因想要这样做,包括邮件未落入垃圾邮件文件夹。
您可以添加到/etc/ssmtp/ssmtp.conf
:
# Where will the mail seem to come from?
rewriteDomain=my_internet_domain.uk
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
Run Code Online (Sandbox Code Playgroud)
请注意,虽然 YES 可用于家庭树莓派,但从安全角度来看,它可能不适用于多用户系统。
“邮件”有什么问题?
echo "你好" | mail -s "重要邮件" user@example.com
“邮件”是从 bsd-mailx 包到 /usr/bin/bsd-mailx 的 /etc/alternative 链接。我相信默认情况下它就在那里。例如,用于从 cron 脚本发送邮件的强大实用程序。
也适用于 Ubuntu 和 FreeBSD。
归档时间: |
|
查看次数: |
68014 次 |
最近记录: |