来自heirloom mailx的HTML电子邮件在linux上
作者:互联网
我一直试图通过在linux服务器上发送来自mailx的html电子邮件.
几点说明:
>我必须指定一个smtp服务器,因此我不能使用sendmail
(这不是我可以改变的事情)
>我无法安装第三方的东西,比如mutt.我将不得不使用
邮件或邮件
>由于我的mail / x版本是传家宝,我没有–append或-a(附加标题选项)
>不确定这是否有帮助,但我的Linux发行版是7.3(Maipo)
我在大多数帖子中看到的stackoverflow为我的情况:
mailx -v -S smtp=SERVER -s "$(echo -e "This is the subject\nContent-Type: text/html")" -r FROM TO < htmlmail.txt
这只是在我的情况下返回纯文本电子邮件.
所以这是我到目前为止所尝试的:
试试1:
我在帖子中看到添加Content-Disposition:inline.
mailx -v -S smtp=SERVER -s "$(echo -e "This is the subject v1\nContent-Type: text/html\nMIME-Version: 1.0\nContent-Disposition: inline")" -r FROM TO < htmlmail.txt
这最终会发送一个html电子邮件,但由于标题与主体内联,因此它会输出:
Content-Disposition: inline Message-ID: User-Agent: Heirloom
mailx 12.5 7/5/10 MIME-Version: 1.0 Content-Type: text/plain;
charset=us-ascii Content-Transfer-Encoding: 7bit Hello World
试试2:
所以我不希望标题打印在身体中.所以我尝试删除Content-Disposition:inline
mailx -v -S smtp=SERVER -s "$(echo -e "This is the subject v2\nContent-Type: text/html\nMIME-Version: 1.0")" -r FROM TO < htmlmail.txt
这最终会发送一个简单的测试电子邮件:
<html>
<b>Hello World</b>
</html>
尝试3:
尝试翻转翻转内容类型和mime版本
mailx -v -S SERVER -s "$(echo -e "This is the subject v3\nMIME-Version: 1.0\nContent-Type: text/html")" -r FROM TO < htmlmail.txt
我最终没有收到此代码的电子邮件
尝试4:
我在网上看到尝试另一个标题来帮助找到问题所在.所以我添加了header选项来设置邮件优先级.
mailx -v -S smtp=SERVER -s "$(echo -e "This is a subject v4\nContent-Type: text/html\nX-Priority: 1 (Highest)")" -r FROM TO < htmlmail.txt
这最终发送了一个高优先级的电子邮件,但都是纯文本.
试试5:
我在上一次尝试的MIME标题上添加了
mailx -v -S smtp=SERVER -s "$(echo -e "This is a subject v5\nMIME-Version: 1.0\nContent-Type: text/html\nX-Priority: 1 (Highest)")" -r FROM TO < htmlmail.txt
这最终发送了一个带有标题的电子邮件,并且优先级没有设置为高……很奇怪
X-Priority: 1 (Highest) Message-ID: User-Agent: Heirloom mailx
12.5 7/5/10 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hello World
在所有这些之后,我尝试了上述尝试的许多其他改编,但它们没有产生新的输出.
所以任何建议或想法都很乐意接受!请记住上面列出的限制因素……我知道它们限制了我的选择,但这是我无法控制的.
谢谢你的时间!
解决方法:
首先是一些背景:
我使用heirloom-mailx版本作为以下线程中的版本:
https://serverfault.com/questions/136106/what-package-to-install-for-sending-emails-from-localhost-ubuntu
我正在使用Ubuntu 16.04 Xenial.也尝试在Ubuntu Server 16.04上.
为了发送电子邮件,我使用以下函数使用mailx(bash中的传家宝mailx)发送邮件:
sendmail() {
#Sending Report Email
heirloom-mailx -a $2 -v -s ""$(echo -e "subject 3\nContent-Type: text/html")"" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://mail.mymailserver:port \
-S from="example@mymailserver.com" \
-S smtp-auth-user=example@mymailserver.com \
-S smtp-auth-password='password' \
-S ssl-verify=ignore \
$1 < body.html
}
其中2美元是附件,1美元是目的地.
笔记:
1.附加的文件也会打印在正文中,但如果您只想发送没有附件的html文件,这对您有用.
2.使用“-v”选项打印详细信息,这样您可能会遇到可以忽略的.mime.types问题.如果您不想在mailx上使用详细信息,请删除该选项.
3.如果使用“-a”选项,您仍然会在正文中获得以下内容:
这是MIME格式的多部分消息. – = – = fFPa7dLqoSF1TGj-YDc2k8bdvmjpix_4sKFT = – = Content-Type:text / plain; charset = US-ASCII Content-Disposition:inline
在这种情况下,我附加一个纯文本文件.
从命令中删除“-a $2”,您将全部设置为打印html消息.
所以最终的结果是:
sendmail() {
#Sending Report Email
heirloom-mailx -s ""$(echo -e "subject 3\nContent-Type: text/html")"" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://mail.mymailserver:port \
-S from="example@mymailserver.com" \
-S smtp-auth-user=example@mymailserver.com \
-S smtp-auth-password='password' \
-S ssl-verify=ignore \
$1 < body.html
}
尝试一下,让我知道.我已经测试了我的结果,它的工作原理.
希望这可以帮助!最好的祝福
标签:html,linux,mailx,mail-command 来源: https://codeday.me/bug/20190813/1648539.html