gpt4 book ai didi

c++ - 在 C++ 中使用 EA Sendmail 时,如何在发送邮件后删除附件?

转载 作者:太空宇宙 更新时间:2023-11-04 13:08:41 25 4
gpt4 key购买 nike

我正在使用 Visual Studio 2015 创建一个使用 EA Sendmail 库的简单发送邮件程序。我尝试发送“D:\tmp\pic.jpg”,发送成功后我会通过命令删除它 remove("D:\\tmp\\pic.jpg")来自 #include<stdio.h> .但是这个文件还在吗?我的错误是什么?

最佳答案

如果是 Windows,可能会发生三件事:1. 发送邮件操作延迟导致文件仍然被阻塞。2. 文件被杀毒软件拦截,虽然它可能会钩住文件的打开事件,但有些杀毒软件只是阻止文件删除\文件移动。3.权限问题。您在磁盘的根目录中使用非标准文件夹。它很可能从根目录继承了权限。在您的特定情况下,您对 runneth 进行编程时没有足够的(未提升的?)权限。4. UTF-16 路径问题。您提供的是真正的路径吗?

您正在使用标准库中的 remove() 吗?那个基于 Windows API 的 POSIX“仿真”层的那个缺少特定于 Window 的功能。您无法确定实际原因,也无法操作 ACL\permissions 并且仅支持路径中的 Latin1。 Windows 支持 NTFS 上的 Unicode(UTF-16),但要使用它,您需要从接受宽字符字符串 (DeleteFileW) 的“ native ”API 调用函数。 Windows API 允许获得比 POSIX 更多的错误代码状态。此外,Windows 还具有监视\等待文件是否被其他操作打开的机制,但该机制仅适用于 Elevated 用户,遗憾的是,这是 taskmgr 的内核级驱动程序。

关于c++ - 在 C++ 中使用 EA Sendmail 时,如何在发送邮件后删除附件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40957405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com