![使用 OpenSSL 发送电子邮件](https://linux22.com/image/75387/%E4%BD%BF%E7%94%A8%20OpenSSL%20%E5%8F%91%E9%80%81%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6.png)
借助 openSUSE 下的 OpenSSL 模块,我可以使用此命令列表发送电子邮件
openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf
helo
auth login
(Put base64 encoded username)
(Put base64 encoded password)
mail from:<email>
rcpt to:<email>
Data
From: email
To: email1, email2, .....
Subject:
(Message body goes here)
.
这样一串命令有可能一次性执行吗?例如脚本?
注意:有一个包含 OpenSSL 模块的嵌入式 Linux 系统,同样的事情也将应用于它。
答案1
你有没有尝试过
openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf <<EOF
helo
auth login
$(echo -n $username | base64)
$(echo -n $password | base64)
mail from:$email0
rcpt to:$email0
Data
From: $email0
To: $emaildest
Subject: $(echo $subject)
$(< body.txt)
.
EOF
- 您必须将消息正文放入
body.txt
(并在之后删除) - 你必须设置所有
$var
...
顺便说一句,如果您对邮件进行签名和加密,您可能希望查看这个问题
答案2
to 3bdalla:当建立ssl连接但没有传输应用层数据,只显示证书时,我必须解决类似的问题。尝试在 openssl 命令行中添加以下参数:参数-key, keyfile, -cert and certfile
之后:<port>
openssl s_client -connect <host>:<port> -key <keyfile> -cert <certfile>
(首先我尝试了命令echo "some_data" | openssl s_client -connect <host>:<port> -key <keyfile> -cert <certfile>
:)