[英]PHP mailer - without attachment doesn't work
我的联系页面上有这个联系表格。 它与附件一起正常工作。 但是,如果没有附件文件,我会收到带有错误字符的电子邮件,例如:“.KĂśrĂźlbelĂźl 35 oldalrĂłl lenne szĂł。”我需要匈牙利语 charset-utf-8 的电子邮件。 我应该在哪里写? 我正在尝试学习 php 语言,但如果您知道我错在哪里,请告诉我。 这是我的代码:
<?php
$statusMsg='';
if(isset($_FILES["file"]["name"])){
$email = $_POST['email'];
$name = $_POST['name'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$captcha;
if(isset($_POST['g-recaptcha-response'])){
$captcha=$_POST['g-recaptcha-response'];
}
if(!$captcha){
echo '<h2>Kérjük pipáld be, hogy nem vagy robot!</h2>';
exit;
}
$secretKey = "6LcsouEUAAAAAHNvPVT_dANY7m0u7yJoGT68hqhW";
$ip = $_SERVER['REMOTE_ADDR'];
// post request to server
$url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($secretKey) . '&response=' . urlencode($captcha);
$response = file_get_contents($url);
$responseKeys = json_decode($response,true);
// should return JSON with success as true
if($responseKeys["success"]) {
echo '<h2>Köszönjük az üzenetet! Hamarosan jelentkezünk</h2>';
} else {
echo '<h2>You are spammer!</h2>';
}
$fromemail = $email;
$subject = $subject;
$email_message = '<h2>Új ajánlatkérés érkezett</h2>
<p><b>Név:</b> '.$name.'</p>
<p><b>Email:</b> '.$email.'</p>
<p><b>Tárgy:</b> '.$subject.'</p>
<p><b>Üzenet:</b><br/>'.$message.'</p>';
$email_message.="Melléklet lehet csatolva. Az üzenet az amidit.hu-n keresztül érkezett.";
$semi_rand = md5(uniqid(time()));
$headers = "From: ".$fromemail;
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";
if($_FILES["file"]["name"]!= ""){
$strFilesName = $_FILES["file"]["name"];
$strContent = chunk_split(base64_encode(file_get_contents($_FILES["file"]["tmp_name"])));
$email_message .= "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type:text/html; charset=\"UTF-8\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$email_message .= "\n\n";
$email_message .= "--{$mime_boundary}\n" .
"Content-Type: application/octet-stream;\n" .
" name=\"{$strFilesName}\"\n" .
//"Content-Disposition: attachment;\n" .
//" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$strContent .= "\n\n" .
"--{$mime_boundary}--\n";
}
$toemail="info@amidit.hu";
if(mail($toemail, $subject, $email_message, $headers)){
$statusMsg= "Az üzenet küldése sikeres.";
}else{
$statusMsg= "Az üzenetet nem sikerült elküldeni. Kérjük, próbáld meg újra.";
}
}
if ($mail_sent == true){ ?>
<script language="javascript" type="text/javascript">
alert('Köszönjük az üzenetet. Hamarosan jelentkezünk!');
window.location = 'https://amidit.hu';
</script>
<?php } else { ?>
<script language="javascript" type="text/javascript">
alert('Köszönjük az üzenetet. Hamarosan jelentkezünk!');
window.location = 'https://amidit.hu';
</script>
<?php
}
?>
谢谢你的帮助!
您可以在 Email Header 部分添加“utf-8”,如下所示。
$headers = "Content-Type: text/html; charset=UTF-8";
要检查的几件事:
接下来,请记住,正确构造 email 消息非常困难 — 应尽可能避免直接使用 PHP mail()
function。 相反,请使用一个库,例如您标记此问题的PHPMailer ,它将为您处理很多事情,并且您只需要设置:
$mail->CharSet = 'utf-8';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.