Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有附件错误的Bash Mutt电子邮件可以';t stat:没有这样的文件或目录_Bash_Email_Mutt - Fatal编程技术网

带有附件错误的Bash Mutt电子邮件可以';t stat:没有这样的文件或目录

带有附件错误的Bash Mutt电子邮件可以';t stat:没有这样的文件或目录,bash,email,mutt,Bash,Email,Mutt,所以我读了一些其他的帖子并尝试了答案,但我仍然遇到这个问题,所以我想在这里发布一个问题,看看是否还有其他人有其他想法。请记住,我对bash还很陌生,所以我对目前我正在寻找的东西有什么不确定 我正在尝试将创建文件然后将其发送给我的过程自动化。所有这些都很好,直到我尝试自动给自己发送电子邮件 我有这行代码 echo "report" | mutt -- "$USEREMAIL" -s "report" -a "my_scripts/cid_reports/trb345432.csv" 当它试图运行

所以我读了一些其他的帖子并尝试了答案,但我仍然遇到这个问题,所以我想在这里发布一个问题,看看是否还有其他人有其他想法。请记住,我对bash还很陌生,所以我对目前我正在寻找的东西有什么不确定

我正在尝试将创建文件然后将其发送给我的过程自动化。所有这些都很好,直到我尝试自动给自己发送电子邮件

我有这行代码

echo "report" | mutt -- "$USEREMAIL" -s "report" -a "my_scripts/cid_reports/trb345432.csv"
当它试图运行此命令时,会抛出一个错误,如

无法统计我的脚本/cid\u报告/trb345432.csv:没有这样的文件或目录
my_scripts/cid_reports/trb345432.csv:无法附加文件。

有没有办法解决这个问题?我认为mutt很好地处理了这个问题,我将使用邮件功能,看看我是否能在这方面取得成功

系统看起来正在运行

Mutt 1.4.2.2i (2006-07-14)  
Copyright (C) 1996-2002 Michael R. Elkins and others.  
Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -v  

没有这样的文件或目录通常意味着找不到该文件。因为您使用的是相对路径,所以您可能位于不同的目录中

如果在运行脚本的同一目录中键入
cat my_scripts/cid_reports/trb345432.csv
,文件是否在那里

否则。如果使用绝对路径(通常为'/home/'uid'/my_scripts/cid_reports/trb345432.csv',但您的路径可能不同),脚本是否找到该文件


(或者这应该是一个注释而不是答案,即使它试图通过查找错误来指导?

通常情况下,
没有这样的文件或目录意味着找不到该文件。因为您使用的是相对路径,所以您可能位于不同的目录中

如果在运行脚本的同一目录中键入
cat my_scripts/cid_reports/trb345432.csv
,文件是否在那里

否则。如果使用绝对路径(通常为'/home/'uid'/my_scripts/cid_reports/trb345432.csv',但您的路径可能不同),脚本是否找到该文件


(或者这应该是一个注释而不是一个答案,即使它试图通过查找错误来引导?

从您的注释到Ljm Dullaart的答案,您实际上是在将文件路径存储在一个变量中,然后使用类似以下内容:

FILE="~/my_scripts/cid_reports/file.csv"
echo "report" | mutt -- "$USEREMAIL" -s "report" -a "$FILE"
file=~/"my_scripts/cid_reports/file.csv"
echo "report" | mutt -- "$useremail" -s "report" -a "$file"
如果这就是您正在做的,那么问题是
~
在双引号中,因此不会扩展到主目录的实际路径。因此,它正在当前工作目录下查找一个名为“~”的子目录,但没有找到它。要将
~
扩展到主目录的路径,请将其和以下
/
保留为不带引号,如下所示:

FILE="~/my_scripts/cid_reports/file.csv"
echo "report" | mutt -- "$USEREMAIL" -s "report" -a "$FILE"
file=~/"my_scripts/cid_reports/file.csv"
echo "report" | mutt -- "$useremail" -s "report" -a "$file"

注意,我还将变量名切换为小写。这是避免与具有特殊含义的各种环境变量发生冲突的最佳实践;特殊的都是大写字母,因此如果使用小写或混合大写字母,您永远不会意外地被它们绊倒。

从您的评论到Ljm Dullaart的答案,您实际上是在将文件路径存储在一个变量中,然后使用类似于以下内容的内容:

FILE="~/my_scripts/cid_reports/file.csv"
echo "report" | mutt -- "$USEREMAIL" -s "report" -a "$FILE"
file=~/"my_scripts/cid_reports/file.csv"
echo "report" | mutt -- "$useremail" -s "report" -a "$file"
如果这就是您正在做的,那么问题是
~
在双引号中,因此不会扩展到主目录的实际路径。因此,它正在当前工作目录下查找一个名为“~”的子目录,但没有找到它。要将
~
扩展到主目录的路径,请将其和以下
/
保留为不带引号,如下所示:

FILE="~/my_scripts/cid_reports/file.csv"
echo "report" | mutt -- "$USEREMAIL" -s "report" -a "$FILE"
file=~/"my_scripts/cid_reports/file.csv"
echo "report" | mutt -- "$useremail" -s "report" -a "$file"

注意,我还将变量名切换为小写。这是避免与具有特殊含义的各种环境变量发生冲突的最佳实践;特殊的都是大写字母,所以如果您使用小写或混合大写字母,您永远不会意外地被它们绊倒。

简单答案

export EMAIL="sender_mail@example.com" | mutt -e "set content_type=text/html" -s "Test Mail" -c "cc_recipient@example.com" -a /tmp/attachment.txt -- "recipient_mail@example.com" < /tmp/message.html
比如,

# mutt -a /tmp/test.txt -- john@abc.com
mutt手册页的相关片段如下所示

生的 -文件[…] 使用MIME将文件附加到邮件。附加单个或多个文件时,必须使用“-”分隔文件名和收件人地址

e、 g.mutt-a image.jpg--addr1或mutt-a img.jpg*.png--addr1 addr2。-a选项必须放在命令行选项的末尾


参考:简单答案

export EMAIL="sender_mail@example.com" | mutt -e "set content_type=text/html" -s "Test Mail" -c "cc_recipient@example.com" -a /tmp/attachment.txt -- "recipient_mail@example.com" < /tmp/message.html
比如,

# mutt -a /tmp/test.txt -- john@abc.com
mutt手册页的相关片段如下所示

生的 -文件[…] 使用MIME将文件附加到邮件。附加单个或多个文件时,必须使用“-”分隔文件名和收件人地址

e、 g.mutt-a image.jpg--addr1或mutt-a img.jpg*.png--addr1 addr2。-a选项必须放在命令行选项的末尾

参考:

您需要添加“-”


您需要添加“--”

您的错误消息引用的文件与您在代码中指定的文件不同。呸,我忘记编辑该文件以匹配,我将代码缩短了一点。文件名应该完全相同。您的错误消息引用的文件与您在代码中指定的文件不同。呸,我忘记编辑该文件以匹配,我将代码缩短了一点。文件名应该完全相同。这是令人恼火的部分,如果我输入文件名本身,即my_scripts/cid_reports/trb345432.csv,那么很好,如果我引用它作为变量,它会抛出错误。因此,您的命令实际上是
echo“report”| mutt--“$USEREMAIL”-s“report”-a“$some_filename”
?出于调试目的,请尝试放置
echo$some\u文件名;在调用MUTT之前使用ls$some\u filename
。更好的方法是使用
声明-p some\u filename
。因此,我不确定我是否按照您的要求正确执行了此操作,但当我执行类似FILE=“~/my\u scripts/cid\u reports/FILE.csv”的操作时