【发布时间】:2014-05-07 22:21:50
【问题描述】:
我试图在 PHP 中使用 mail() 函数发送邮件。电子邮件发送成功,并且它存在于收件箱中。问题是打印在电子邮件标题中的标题。我已经尝试了标题的各种代码。 1.第一个是这样的:
$headers = "From: My Example Email".'\r\n'.
"MIME-Version: 1.0".'\r\n'.
"Content-Type: text/html; charset=ISO-8859-1".'\r\n'.
'X-Mailer: PHP/' . phpversion();
结果:My Example EmailrnMIME-Version
2.第二个标题代码:
$headers = "From: My Example Email"."\r\n".
"MIME-Version: 1.0"."r\n".
"Content-Type: text/html; charset=ISO-8859-1"."\r\n".
'X-Mailer: PHP/' . phpversion();
结果:电子邮件未发送
3.第三个标题代码:
$headers = "From: My Example Email".'"\r\n"'.
"MIME-Version: 1.0".'"\r\n"'.
"Content-Type: text/html; charset=ISO-8859-1".'"\r\n"'.
'X-Mailer: PHP/' . phpversion();
结果:My Example Emailrn
我使用 PHP 5.4.19。任何答案都会有帮助。
更新
这是我的全部代码:
class User{
function callname(){
$user = $_SESSION['id'];
$query = ("SELECT * FROM user WHERE user.id='$user'");
while ($result=mysql_fetch_array($query)){
echo ($result['username']);}}}
$user = new User;
if($_SERVER["REQUEST_METHOD"] == "POST"){
$username = mysql_real_escape_string(trim($_POST['username']));
$check = mysql_num_rows(mysql_query("SELECT * FROM user WHERE username='$username'"));
if ($check==TRUE){
$name = $user->callname();
$to = "myemail@domain.com";
$subject = "Example Subject";
$headers = "From: My Example Email".'"\r\n"'.
"MIME-Version: 1.0".'"\r\n"'.
"Content-Type: text/html; charset=ISO-8859-1".'"\r\n"'.
'X-Mailer: PHP/' . phpversion();
$message = "Hai $name, this is the new message.";
mail($to, $subject, $message, $headers);
} else {
?>
<script type="text/javascript">
alert("Sorry, username not exist !");
</script>
<?php }}
新的更新:
经过长时间的尝试和这里的大家的帮助,终于找到了解决方案。但也许这很不寻常。
$headers = 'From: My Example Email'.'""'.
'MIME-Version: 1.0'.'""'.
'Content-Type: text/html; charset=ISO-8859-1'.'""'.
'X-Mailer: PHP/' . phpversion();
但我还不明白。一些文献说每个部分都应该用“\r\n”粘合,但这在我的代码中不起作用。 感谢您的每一个帮助。非常感谢。这真的很有帮助。
【问题讨论】:
-
如果您的服务器正在运行 Postfix - 您最好使用
PHP_EOL而不是\r\n作为行终止符。 -
我在 localhost 中运行它。我怎样才能看到里面的 Postfix?
标签: php email-headers