Laravel 5.8发送邮件时发件人含特殊字符不显示问题求助
解决Laravel 5.8发件人名称含特殊字符无法显示的问题
嘿,这个问题我之前碰到过!Laravel 5.8里直接在发件人名称里用@这类特殊字符,会因为邮件协议的格式要求导致名称无法正常解析显示——毕竟@是邮箱地址的分隔符,邮件客户端会把它当成地址的一部分处理,自然就看不到你想要的名称了。
给你两个可行的解决方案:
方案1:用MIME编码处理特殊字符
最稳妥的方式是用PHP的mb_encode_mimeheader()函数对发件人名称进行编码,让它符合MIME邮件头的标准格式。修改你的代码如下:
Mail::send('emails.purchase-token', $data, function($message){ $message->from('noreply@thetanos.com', mb_encode_mimeheader('TheTh@nos')); $message->subject('New Tokens Have Been Added To Your Wallet'); $message->to("recipient01@gmail.com"); });
这个函数会把特殊字符转换成邮件客户端能正确识别的编码格式,不管是Gmail、Outlook还是其他客户端,都能正常显示发件人名称。
方案2:手动用引号包裹名称
另一种方式是把包含特殊字符的名称用双引号括起来,告诉邮件客户端这是完整的名称部分:
Mail::send('emails.purchase-token', $data, function($message){ $message->from('noreply@thetanos.com', '"TheTh@nos"'); $message->subject('New Tokens Have Been Added To Your Wallet'); $message->to("recipient01@gmail.com"); });
不过这个方法在少数老旧邮件客户端可能存在兼容性问题,所以优先推荐方案1。
修改后记得发送测试邮件,多在几个主流客户端里检查显示效果,确保问题解决~
内容的提问来源于stack exchange,提问作者Syamsoul Azrien
相关产品推荐
相关产品推荐

