3 回答

TA貢獻1801條經驗 獲得超8個贊
我會重寫它,變成這樣:
// Now create a message
require 'vendor/autoload.php';
//$mail->AllowEmpty = true;
$mail = new PHPMailer;
$mail->setFrom('info@*****.com', 'first last');
$mail->addAddress('info@*****.com');
$mail->Subject = 'PHPMailer file sender';
$mail->Body = "Contact form submission:\n" . "Name: $sender_name\n";
if (array_key_exists('userfile', $_FILES) && $_FILES["userfile"]["error"] == UPLOAD_ERR_OK) {
// First handle the upload
// Don't trust provided filename - same goes for MIME types
// See http://php.net/manual/en/features.file-upload.php#114004 for more thorough upload validation
$uploadfile = tempnam(sys_get_temp_dir(), hash('sha256', $_FILES['userfile']['name']));
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
// Upload handled successfully
// Attach the uploaded file
//$mail->addAttachment($uploadfile, 'My uploaded file');
$name = $_FILES['userfile']['name'];
$ext = end((explode(".", $name)));
$mail->addAttachment($uploadfile, 'You Have Attachment.'.$ext);
} else {
$msg .= 'Failed to move file to ' . $uploadfile;
}
}
if (!$mail->send()) {
$msg .= "Mailer Error: " . $mail->ErrorInfo;
} else {
$msg .= "Message sent!";
}
這樣它將發送電子郵件,如果有文件附件,它將被包含在內。

TA貢獻2039條經驗 獲得超8個贊
它以這種方式工作,現在它正在發送帶/不帶附件的電子郵件,我還將發件人姓名和電子郵件等許多內容更改為變量和正文內容?,F在我沒有收到任何 PHP 錯誤,并且表單按照我的意愿完美運行,我希望這會對某人有所幫助,謝謝大家。
<?php
use PHPMailer\PHPMailer\PHPMailer;
$msg = '';
if (array_key_exists('userfile', $_FILES)) {
require 'vendor/autoload.php';
// Create a message
$mail = new PHPMailer;
$mail->SetFrom($_POST['email'], $_POST['sender_name']); //altered
$mail->addAddress('info@***.com');
$mail->Subject = 'Service Request';
$mail->Body = "Sender: " .$_POST['sender_name'] ."\n" ."Phone: " .$_POST['phone']; //altered
//Attach multiple files one by one
for ($ct = 0; $ct < count($_FILES['userfile']['tmp_name']); $ct++) {
$uploadfile = tempnam(sys_get_temp_dir(), hash('sha256', $_FILES['userfile']['name'][$ct]));
$filename = $_FILES['userfile']['name'][$ct];
if (move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)) {
$mail->addAttachment($uploadfile, $filename);
}
}
if (!$mail->send()) {
$msg .= "Mailer Error: " . $mail->ErrorInfo;
} else {
$msg .= "Message sent!";
}
}
?>

TA貢獻2003條經驗 獲得超2個贊
完成實際發送的整個腳本取決于是否有文件是或否的事實。這是由腳本頂部的 if 語句處理的。我建議在始終發送電子郵件的地方進行編輯,并且只有在有文件是或否時才會添加文件。但由于我在移動設備上,我不知道編輯建議是否通過。
- 3 回答
- 0 關注
- 226 瀏覽
添加回答
舉報