-1
フォームに記入すると、ユーザーが添付ファイルを送信できるようにしようとしています。添付ファイルをPHPフォーム経由でメールに送信するにはどうすればよいですか?
私はメールを送信できますが添付ファイルは送信されません。
これはHTML
<form method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" id="name" placeholder="Your name" name="name">
</div>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control" id="email" placeholder="Please enter your email" name="email">
</div>
<div class="form-group">
<textarea class="form-control" id="text" placeholder="What would you like to tell us" rows="3" name="text"></textarea>
<div class="form-group">
<label for="file"></label>
<input type="file" class="form-control-file" id="file" name="attachment" onchange="return ValidateFileUpload()">
</div>
</div>
<button type="submit" id="submit" class="btn btn-primary">Submit</button>
</form>
これは、PHPコードです:
<?php
$error = ""; $successMessage = "";
if ($_POST) {
if (!$_POST["email"]) {
$error .= "An email address is required.<br>";
}
if (!$_POST["name"]) {
$error .= "Your name is required.<br>";
}
if ($_POST['email'] && filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) === false) {
$error .= "The email address is invalid.<br>";
}
if ($error != "") {
$error = '<div class="alert alert-danger" role="alert"><p>There were error(s) in your form:</p>' . $error . '</div>';
} else {
$emailTo = "@gmail.com";
$subject = $_POST['name'];
$content = $_POST['text'];
$file = $_POST['file'];
$headers = "From: ".$_POST['email'];
if (mail($emailTo, $subject, $content, $headers)) {
$successMessage = '<div class="alert alert-success" role="alert">Your message was sent, we\'ll get back to you ASAP!</div>';
} else {
$error = '<div class="alert alert-danger" role="alert"><p><strong>Your message couldn\'t be sent - please try again later</div>';
}
}
}
?>
この質問は非常に頻繁に来ます。アドバイスは、常にphp 'mail()'を使わず、APIを使って良いライブラリやメールサービスを使うことです。たとえば、https://github.com/PHPMailer/PHPMailerまたはhttps://postmarkapp.com –
SwiftMailやPHPMailerなどのメールライブラリを使用することをお勧めします。単純なテキストを送信する以外のことをする場合は郵便物。それはあなたに頭痛の多くを保存します。また、実際のSMTP経由でメールを送信することも非常に簡単で、メールのバウンス/間違ってスパムとしてタグ付けされるリスクを軽減します。 –
_注:_質問を書くときは、同じテキストを何度も貼り付けないようにしてください。私はあなたのために質問をきれいにした。 –