簡體   English   中英

如何在簡單的php郵件腳本中僅顯示名稱而不是發件人的電子郵件地址

[英]How to show only the name instead of the email address of the sender in a simple php mail script

我有一個簡單的PHP郵件腳本,它將發送電子郵件。

問題是發送時顯示sendername <senderemail@domain.com>

我在代碼中給出了$headers = "From: $name <$senderEmail>";

我只想顯示發件人的姓名,而不顯示電子郵件地址。

我怎么做?

這是程序的整體。

<?php

if($_POST["submit"]) {
    $recipient=$_POST["senderemail"];
    $subject=$_POST["subject"];
    $name=$_POST["name"];
    $senderEmail=$_POST["email"];
    $city=$_POST["city"];
    $headers = "From: $name <$senderEmail>";
    $mailBody="$city\n";
    $process=explode(",",$recipient);
    reset($process);

    foreach ($process as $to) {
        mail($to,$subject, $mailBody,$headers);
    }

    $thankYou="<p>Thank you! Your Message has been sent.</p>";
    echo 'Thank you! Your Message has been sent.';
}
?>

您生成的消息似乎已經在From:標頭中包含用戶的全名(假設$name是人類可讀的名稱)。 任何單個用戶代理如何顯示此信息都不再由您掌握。 通常,它將顯示兩個部分,無論如何; 或僅在收件人的通訊錄中包含發件人的電子郵件地址時縮寫為人類可讀的名稱。 (Thunderbird更進一步,並顯示通訊錄中的信息而不是消息中的實際信息!)

一個常見的問題是,生成的消息是否具有不同的Sender:標頭; 通常,這將導致收件人的用戶代理顯示的不只是通常的全名。 您的問題沒有提及這一點,也沒有顯示生成的消息之一。 但這也許可以幫助您找到解決方案。

包含名稱和地址的From標頭應采用以下格式:

From: User Name <user@example.com>

如果您不提供姓名,它將顯示電子郵件地址。

PHPMailer具有內置支持,可通過FromFromName屬性以及setFrom方法(無論使用setFrom方法)為您正確創建此標頭:

$mail->setFrom('user@example/com', 'User Name');

要么

$mail->From = 'user@example/com';
$mail->FromName = 'User Name';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM