我正准备为网站创建一个表单页面,该表单页面需要用户填写许多字段并将其发送到指定的电子邮件.
到目前为止,我已经创建了一个虚拟的PHP电子邮件页面,可以使用Google的SMTP获取您的邮件,附件和收件人电子邮件地址.
这是我的uploadtest.HTML代码:
<body>
<h1>Test Upload</h1>
<form action="email.PHP" method="get">
Message: <input type="text" name="message">
Email: <input type="text" name="email"><br>
Attach File: <input type="file" name="file" id="file">
<input type="submit">
</form>
</body>
<?PHP
require("class.PHPmailer.PHP");
$mail = new PHPMailer();
$recipiant = $_GET["email"];
$message = $_GET["message"];
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true; // SMTP authentication
$mail->Host = "smtp.gmail.com"; // SMTP server
$mail->Port = 465; // SMTP Port
$mail->SMTPSecure = 'ssl';
$mail->Username = "xxxxx@gmail.com"; // SMTP account username
$mail->Password = "xxxxxxxx"; // SMTP account password
$mail->AddAttachment($_FILES['tmp_name']); //****HERE'S MY MAIN PROBLEM!!!
$mail->SetFrom('cinicraftmatt@gmail.com', 'CiniCraft.com'); // FROM
$mail->AddReplyTo('cinicraftmatt@gmail.com', 'Dom'); // Reply TO
$mail->AddAddress($recipiant, 'Dominik Andrzejczuk'); // recipient email
$mail->Subject = "First SMTP Message"; // email subject
$mail->Body = $message;
if(!$mail->Send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent.';
}
?>
因此,从我在这里可以看出,PHPMailer的AddAttachment()方法将您想要附加的文件DIRECTORY的URL作为参数.这就是我的主要问题所在.
变量的名称会得到我上传的文件(dir / upload.jpg)的位置,所以我可以将它用作AddAttachment()方法中的参数吗?
解决方法:
不,它不需要URL或目录.它需要直接路径到文件.
例如
$mailer->AddAttachment(
'/path/to/file/on/your/server.txt',
'name_of_file_in_email',
'base64',
'mime/type'
);
这条道路是不言自明的. name_of_file_in_email允许您“重命名”该文件,以便您可以在服务器上加载名为“foo.exe”的文件,它可以在客户端收到的电子邮件中显示为“bar.jpg”.
您的问题是您尝试附加上传的文件,但使用了错误的来源.它应该是
<input type="file" name="thefile" />
^^^^^^^
$_FILES['thefile']['tmp_name']
^^^^^^^
请注意$_FILES的字段名称关系.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。