如何在PHPMailer中设置发件人名称(from name)?
解决PHPMailer自定义发件人名称的问题
嘿,这问题很好解决!你现在的核心问题是**SetFrom方法的参数用错了**,导致收件人看到的发件人是邮箱ID而不是你想要的自定义名称。
问题原因
PHPMailer的SetFrom()方法需要两个参数:
- 第一个参数:发件人的邮箱地址(必须和你SMTP认证的邮箱一致,不然可能被邮件服务商拦截)
- 第二个参数:你想要显示的自定义发件人名称(可选,但这正是你需要的)
你之前只传了名称"Kreatz.in",没传邮箱地址,所以PHPMailer自动使用了$mail->Username作为发件人地址,名称就默认显示成邮箱ID了。
修改后的完整代码
<?php $mailto = $_POST['mail_to']; $mailSub = $_POST['mail_sub']; $mailMsg = $_POST['mail_msg']; require 'PHPMailer-master/PHPMailerAutoload.php'; $mail = new PHPMailer(); $mail->IsSmtp(); $mail->SMTPDebug = 0; $mail->SMTPAuth = true; $mail->SMTPSecure = 'ssl'; $mail->Host = "smtp.gmail.com"; $mail->Port = 465; // or 587 $mail->IsHTML(true); $mail->Username = "dkdev006@gmail.com"; $mail->Password = "password"; // 重点修改这里:第一个参数是邮箱,第二个是自定义名称 $mail->SetFrom("dkdev006@gmail.com", "Kreatz.in"); $mail->Subject = $mailSub; $mail->Body = $mailMsg; $mail->AddAddress($mailto); if(!$mail->Send()) { echo "Mail Not Sent"; } else { echo "Mail Sent"; } ?>
额外提示
如果需要设置单独的回复地址(和发件人地址不同),可以添加这一行:
$mail->AddReplyTo("your-reply-email@example.com", "Your Reply Name");
内容的提问来源于stack exchange,提问作者Deepak dev
相关产品推荐
相关产品推荐

