【问题标题】:Sending an uploaded file as attachment but not saving to server将上传的文件作为附件发送但不保存到服务器
【发布时间】:2016-09-26 21:07:42
【问题描述】:

我的网站上有一个联系表格,允许用户将文件作为附件发送到电子邮件。现在我的理由是,我不需要或不一定希望将每张图片都上传到网站服务器,但是当使用表单输入文件时,我还是会上传。

表单上传文件是有道理的,因为这是它的功能,但我想知道这是否不可避免,或者是否有办法仍然将图像作为附件发送但不将其上传到服务器。

【问题讨论】:

  • 肯定有办法的。最简单的方法是使用 phpmailer github.com/PHPMailer/PHPMailer - 然而看到你的其他问题/答案stackoverflow.com/q/37444737,你正在使用 swiftmailer。所以你的问题现在还不清楚。
  • 我正在使用 swiftmailer,有什么方法可以达到同样的目标吗? @Fred-ii-
  • 当然,只是不要使用具有上传功能的代码;只需附上它们。不需要保存到服务器。
  • 如果服务器通过电子邮件发送文件,那么文件需要以某种形式或方式在服务器上。
  • 如果您不需要它,请删除它。它被发送到一个临时目录,以便可以定期刷新。

标签: php image forms email upload


【解决方案1】:

从这个答案https://stackoverflow.com/a/23849972/ 中提取(并且花了一些时间为他们找到解决方案)。

旁注:我赞成它从中提取的答案,只是为了让你知道。

“我将$_FILES['attachment']['tmp_name'] 分配给了一个临时变量,它起作用了! 不知道为什么,但这为我解决了。 这是我的代码”

// Swiftmail commands ====================================
require_once('./swiftmailer/lib/swift_required.php');

$transport = Swift_SmtpTransport::newInstance('smtp.host.com', 587)
->setUsername('email@host.com')
->setPassword('pass');

$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance()
->setSubject($subject_temp)

->setFrom(array($from_email => $full_name))

->setTo(array('email@host.com' => 'Jack'))

->setBody($message_temp)

->attach(Swift_Attachment::fromPath($file_temp_name)

->setFilename($name_of_file));

$result = $mailer->send($message);

// Swiftmail commands ====================================

$file_temp_name = $_FILES['attachment']['tmp_name'];$name_of_file = basename($_FILES['attachment']['name']); 在哪里

  • 因此,反过来(我知道可以这样做),您将使用服务器上临时存储的文件并将其附加到邮件中,一旦成功提供/处理,该文件就会自动被删除。李>

【讨论】:

    【解决方案2】:

    如 cmets 所述:

    1.) 尽管可以在发布后自动删除文件,但我使用的电子邮件功能并不是这样设置的。因此,上传到服务器是不可避免的。或者至少据我所知。

    2.) 我可以在发送邮件后从服务器上删除文件。

    如果发现最能解决我的问题的解决方案,将更新。

    【讨论】:

    • 不一定,求不同。
    • 小心阐述@Fred-ii-
    • 我已经在上面发表了评论。这几乎是不言自明的;-)
    • 另外,在使用 PHP 的 mail() 函数之前,我已经附加了文件,而无需将它们存储在服务器上。 (上传的临时文件)在发送/处理后会自动被删除。 TBH,我从未使用过 Swiftmailer。
    • 这是您的解决方案stackoverflow.com/a/23849972 并使用临时文件;我知道这是可能的。您希望我从中提取该代码并使其成为答案吗?因为找到它;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 2021-06-09
    • 2018-08-30
    • 1970-01-01
    相关资源
    最近更新 更多