Perl脚本发送邮件附件hello.txt为空的原因及解决咨询
问题分析与解决
你的代码里有两个关键问题导致附件内容为空,同时存在MIME类型的不规范问题:
1. 附件路径错误(核心原因)
Path => 'C:\Users\Desktop' 只指定了目录,没有指向具体的hello.txt文件,MIME::Lite无法读取到目标文件内容,所以附件显示为空。必须把路径改为完整的文件路径:
Path => 'C:\Users\Desktop\hello.txt',
2. MIME类型不规范
application/text不是标准MIME类型,文本文件应使用text/plain,虽然这不会直接导致内容为空,但会影响邮件客户端对附件类型的正确识别:
Type => 'text/plain',
额外问题:未定义的$cc变量
代码中Cc => $cc的$cc未定义,运行时会抛出警告,建议要么注释掉这一行,要么给$cc赋值(比如$cc = '';)。
修改后的完整代码
#!/usr/bin/perl use MIME::Lite; $to = 'abc@gmail.com'; $from = 'abc@gmail.com'; $subject = 'Test Email'; $message = 'This is test email sent by Perl Script'; # 处理cc变量:赋值为空或注释掉Cc参数 $cc = ''; $msg = MIME::Lite->new( From => $from, To => $to, Cc => $cc, Subject => $subject, Type => 'multipart/mixed' ); # 添加文本内容 $msg->attach( Type => 'text', Data => $message ); # 添加附件 $msg->attach( Type => 'text/plain', Path => 'C:\Users\Desktop\hello.txt', Filename => 'hello.txt', Disposition => 'attachment' ); $msg->send; print "Email Sent Successfully\n";
内容的提问来源于stack exchange,提问作者DM 256
相关产品推荐
相关产品推荐

