我需要使用脚本定期发送生成的 CSV 文件。我正在使用UUENCODE
和mailx
相同的。
但我需要知道有什么方法/途径可以知道电子邮件发送成功吗?任何一种致谢或者反馈或者其他的东西???
它可能会报告任何错误。该文件也是机密的并且无意偏离某些外国道路。
编辑:用于邮寄的代码。
subject="Something happened"
to="[email protected]"
body="Attachment Test"
attachment=/home/iv315/timelog_file_150111.csv
(cat test_msg.txt; uuencode $attachment somefile.csv) | mailx -s "$subject" "$to"
答案1
电子邮件是在计算机之间没有永久、快速的网络连接的情况下以邮政邮件的模式设计的。当您发送电子邮件时,它会被发送到服务器,服务器再将其发送到另一台服务器,依此类推,直到电子邮件到达目的地。最古老的邮件系统有本地交付,然后有一些系统,电子邮件必须指定到达目的地之前的中继列表,如今,电子邮件通过网络自动路由,几乎所有计算机在大多数时间都可以相互访问。尽管如此,电子邮件仍然是一种邮件服务,而不是即时消息服务。如果电子邮件在途中延迟,例如由于临时网络中断,中间服务器将保留电子邮件,直到链接恢复。
由于这种设计,电子邮件是异步的。该mailx
命令所做的只是将电子邮件传输到本地MTA。表示成功的返回代码mailx
表示本地 MTA 已接受发送电子邮件的工作。此时,电子邮件有已发送成功。之后,MTA 的工作就是将电子邮件发送到目的地。如果 MTA 无法兑现其交付承诺,则应发送退回邮件发送电子邮件的用户。
您无法确定电子邮件是否已发送到收件人的收件箱,即使知道也没有什么用(例如,如果电子邮件成功发送,那么存储收件箱的计算机会在火灾中被烧毁怎么办?)。如果您需要知道收件人是否收到了电子邮件,唯一可靠的方法是包含人类可读的说明来确认电子邮件。 (有一些方法可以在某些软件中打开电子邮件时自动发送收据,但它们仅适用于兼容的软件,而且也不可靠,例如,如果收件人的计算机在打开电子邮件后立即崩溃。)
知道电子邮件是否已送达并不能说明其他人是否能够阅读它。与实物不同,电子信息实际上不会“偏离”:它们会被复制,如果周围有多余的副本,则无法检测到。如果电子邮件需要保密,请对其进行加密。
答案2
令人惊讶的是没有对此进行更多讨论。
吉尔斯是正确的,跟踪电子邮件由人类阅读/由服务器接收/由客户端软件打开/由客户端软件下载是很困难的。
https://blog.filippo.io/how-the-new-gmail-image-proxy-works-and-what-this-means-for-you/
似乎有一些人使用了谷歌分析,不确定这是否能够提供有用的结果,可能对于跟踪大多数基于常见网络服务的用户有用,对于避免跟踪的定制技术精通用户来说不太准确。
https://developers.google.com/analytics/devguides/collection/protocol/v1/email
https://dyn.com/blog/tracking-email-opens-via-google-analytics/