我一直试图通过在linux服务器上发送来自mailx的html电子邮件.几点说明:我必须指定一个smtp服务器,因此我不能使用sendmail(这不是我可以改变的事情)我无法安装第三方的东西,比如mutt.我将不得不使用邮件或邮件由...
我一直试图通过在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
}
尝试一下,让我知道.我已经测试了我的结果,它的工作原理.
希望这可以帮助!最好的祝福
本文标题为:来自heirloom mailx的HTML电子邮件在linux上
基础教程推荐
- JS滚动到顶部踩坑解决记录 2023-07-10
- 爬取今日头条Ajax请求 2023-02-23
- VSCode配置启动Vue项目 2023-10-08
- Ajax实现异步用户名验证功能 2022-12-28
- Express框架定制路由实例分析 2023-07-09
- layer.open获取弹出层(子集iframe)中的元素或参数 2022-10-05
- 通过history解决ajax不支持前进/后退/刷新的问题 2023-02-14
- 解决ajax提交到后台数据成功但返回不走success而走的error问题 2023-02-23
- html粘性页脚的具体使用 2022-09-21
- js结合json实现ajax简单实例 2023-02-01