Php 使用SwiftMailer从web表单上载的电子邮件附件

Php 使用SwiftMailer从web表单上载的电子邮件附件,php,forms,file-upload,email-attachments,swiftmailer,Php,Forms,File Upload,Email Attachments,Swiftmailer,我试图使用swftmailer从html网页上的表单上传一个文件(jpg、ppt、pdf、word等,最大上传量为6MB),通过swftmailer通过电子邮件发送表单内容和附加文件 我的表单已创建&我正在使用$\u POST捕获thankyou.php页面中的字段值。电子邮件正在发送,但我无法获取要附加的文件 上传/附加文件需要是一个选项,我在网上找到了一个资源,它只在上传文件时发送信息,这并不总是如此,所以我转向swiftmailer,它看起来很棒,但在文档/示例中它也指定了上传附件的路径,

我试图使用swftmailer从html网页上的表单上传一个文件(jpg、ppt、pdf、word等,最大上传量为6MB),通过swftmailer通过电子邮件发送表单内容和附加文件

我的表单已创建&我正在使用$\u POST捕获thankyou.php页面中的字段值。电子邮件正在发送,但我无法获取要附加的文件

上传/附加文件需要是一个选项,我在网上找到了一个资源,它只在上传文件时发送信息,这并不总是如此,所以我转向swiftmailer,它看起来很棒,但在文档/示例中它也指定了上传附件的路径,我只想能够读取文件(不指定路径)并将其作为附件发送到给定的电子邮件地址以及其他表单字段、名称电子邮件、电话和消息

任何帮助都将不胜感激

我的HTML(contact.HTML)


给我们寄一份图纸或文件

我的PHP代码:

<?php
require_once 'lib/swift_required.php';

$fromEmail = $_POST['fieldFormEmail']; 
$fromName = $_POST['fieldFormName'];
$fromPhone = $_POST['fieldFormPhone'];
$fromMessage = $_POST['fieldDescription'];
$fromAttachment = $_POST['fieldAttachment'];

// Create the mail transport configuration
$transport = Swift_MailTransport::newInstance();

// Create the message
$message = Swift_Message::newInstance();
$message->setTo(array(
"sender@domain.com" => "Sender Name"
));
$message->setSubject("This email is sent using Swift Mailer");
$message->setBody(
"From: " . $fromName . "\n" .
"Email: " . $fromEmail . "\n" .
"Phone: " . $fromPhone . "\n" .
"Message: " . $fromMessage . "\n"
);
$message->setFrom("$fromEmail", "$fromName");

// *** This is the part I am struggling to understand *** //
$message->attach(Swift_Attachment::newInstance('$fromAttachment'));

// Send the email
$mailer = Swift_Mailer::newInstance($transport);
$mailer->send($message);

?>


提前感谢您检查表单上载。可能您在这方面有错误

<form enctype="multipart/form-data" action="" method="POST">

替换您的代码

$message->attach(Swift_Attachment::newInstance('$fromAttachment'));
关于这个

$message->attach(
Swift_Attachment::fromPath($_FILES['fieldAttachment']['tmp_name'])->setFilename($_FILES['fieldAttachment']['name'])
);

我已经使用了DarveL的代码,并添加了一个if语句来检查是否上传了文件,因为如果用户没有附加文件,我仍然希望发送电子邮件。 下面的代码可以工作,所以现在我只需要添加一些文件类型/大小验证

if(is_uploaded_file($_FILES['fieldAttachment']['tmp_name'])) {


$message->attach(

Swift_Attachment::fromPath($_FILES['fieldAttachment']
['tmp_name'])->setFilename($_FILES['fieldAttachment']['name'])

);


}

您好,DarveL,谢谢您的回复,我已经在上面发布了我的HTML,看起来是正确的,我想我使用下面的行是错误的:$message->attach(Swift_Attachment::newInstance(“$fromAttachment”);有人能帮我解决这个问题吗?
if(is_uploaded_file($_FILES['fieldAttachment']['tmp_name'])) {


$message->attach(

Swift_Attachment::fromPath($_FILES['fieldAttachment']
['tmp_name'])->setFilename($_FILES['fieldAttachment']['name'])

);


}