PHP と Swiftmailer を使用してメーリング システムを開発しています: 私のスクリプトを見てください:
// HTML フォーム
<form method="POST" action="mailer.php">
<label>Sender's Email:</label>
<input type="text" name="email" tabindex="1" placeholder="Sender's Email" required/>
<label>Subject:</label>
<input type="text" name="subject" tabindex="2" placeholder="Enter Email Subject" required />
<label>Attach File:</label>
<input type="file" name="attach" tabindex="3" value=" " />
<label for="Message">Message:</label><br />
<textarea name="message" tabindex="4" placeholder="Enter Message" rows="20" cols="20"></textarea>
<input type="submit" name="submit" value="Send" class="submit-button" />
</form>
// Mailer.php --> メールのメッセージ部分
$message = Swift_Message::newInstance()
->setSubject($_POST['subject'])
->setFrom($_POST['email'])
->setBody('<em>' . $_POST['message'] . '!</em>', 'text/html')
->addPart('Here is the message in plain text!', 'text/plain');
$message->attach(Swift_Attachment::fromPath($_POST['attach']));
$mailer->batchSend($message);`
/////////////////////////////////////////////// ///////////////////////////////////
私の2つの問題は次のとおりです。
1. ルート ディレクトリ以外の別のディレクトリからファイルをアップロードすると、次のエラーが表示されます。
警告: fopen(.open child's locket.jpg): ストリームを開くことができませんでした: No such file or directory in C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\ByteStream\FileByteStream.php on line 125 Fatal error : C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\ByteStream\FileByteStream.php:126 スタックで、「[.open child's locket.jpg] を読み取るためのファイルを開くことができません」というメッセージを含むキャッチされない例外「Swift_IoException」 trace: #0 C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\ByteStream\FileByteStream.php(75): Swift_ByteStream_FileByteStream->_getReadHandle() #1 C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib \classes\Swift\Mime\ContentEncoder\Base64ContentEncoder.php(34): Swift_ByteStream_FileByteStream->read(8190) #2 C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\Mime\SimpleMimeEntity.php(500): Swift_Mime_ContentEncoder_Base64ContentEncoder->encodeByteStream(Object(Swift_ByteStream_FileByteStream), Object(Swift_Transport_StreamBuffer), 0, 78) #3 C:\xampp\ htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\Mime\SimpleMimeEntity.php(517): Swift_Mime_SimpleMimeEntity->toByteStream(Object(Swift_Transport_StreamBuffer)) '#4 C:\xampp\htdocs\MailerProject_Test\SwiftMailer\ in C:\xampp \htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\ByteStream\FileByteStream.php 行 126\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\Mime\SimpleMimeEntity.php(517): Swift_Mime_SimpleMimeEntity->toByteStream(Object(Swift_Transport_StreamBuffer)) '#4 C:\xampp\htdocs\MailerProject_Test\SwiftMailer\ in C :\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\ByteStream\FileByteStream.php 126 行目\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\Mime\SimpleMimeEntity.php(517): Swift_Mime_SimpleMimeEntity->toByteStream(Object(Swift_Transport_StreamBuffer)) '#4 C:\xampp\htdocs\MailerProject_Test\SwiftMailer\ in C :\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\ByteStream\FileByteStream.php 126 行目
2.ファイルを添付しないと(ユーザーに添付を許可する必要があります)、次のエラーが表示されます。
警告: fopen(): C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\ByteStream\FileByteStream.php でファイル名を空にすることはできません 125 行目の致命的なエラー: キャッチされない例外 'Swift_IoException' とメッセージ 'Unable to open C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\ByteStream\FileByteStream.php:126 の []' を読み取るためのファイル スタック トレース: #0 C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes \Swift\ByteStream\FileByteStream.php(75): Swift_ByteStream_FileByteStream->_getReadHandle() #1 C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\Mime\ContentEncoder\Base64ContentEncoder.php(34): Swift_ByteStream_FileByteStream- >read(8190) #2 C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\Mime\SimpleMimeEntity.php(500):Swift_Mime_ContentEncoder_Base64ContentEncoder->encodeByteStream(Object(Swift_ByteStream_FileByteStream), Object(Swift_Transport_StreamBuffer), 0, 78) #3 C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\Mime\SimpleMimeEntity.php(517): Swift_Mime_SimpleMimeEntity-> toByteStream(Object(Swift_Transport_StreamBuffer)) '#4 C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\Mime\S in C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\ByteStream\ 126 行目の FileByteStream.phptoByteStream(Object(Swift_Transport_StreamBuffer)) '#4 C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\Mime\S in C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\ByteStream\ 126 行目の FileByteStream.phptoByteStream(Object(Swift_Transport_StreamBuffer)) '#4 C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\Mime\S in C:\xampp\htdocs\MailerProject_Test\SwiftMailer\lib\classes\Swift\ByteStream\ 126 行目の FileByteStream.php