使用 OpenSSL 发送电子邮件

使用 OpenSSL 发送电子邮件

借助 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>:)

相关内容