首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不工作,但工作

不工作,但工作
EN

Stack Overflow用户
提问于 2013-09-12 06:55:59
回答 1查看 1.8K关注 0票数 1

我正在通过CodeIgniter的电子邮件->send()发送一封电子邮件。我遇到了一个我搞不懂的异常现象。

"\r\n“在电子邮件的某个部分不起作用。但是,如果我将"\r\n“切换为”\r\n\n“,它就会工作。我的意思是,它增加了预期的2行中断。

问题区域在底部。

代码语言:javascript
复制
$order  = $this->ordersclass->getOrder( $order_id );
$quantity   = $order['no_codes'];
$client = $this->clientclass->getClient( $order['client_id'] );
$multi_d    = $this->session->userdata('multi-use-codes-d');
$multi_t    = $this->session->userdata('multi-use-codes-t');

$this->load->library('email');

$to         = $client['client_email'];
$subject    = 'Personal Resiliency Builder Order';
$from       = 'accounts@resiliencybuilder.com.au';

$message  = "TAX INVOICE\r\n\r\n";
$message .= "Client Name: ". $client['client_name']."\r\n";
$message .= "Invoice Number: ".$order['order_id']."\r\n";
$message .= "Invoice Date: ".$order['order_timestamp']."\r\n\r\n";

$message .= "TOTAL AMOUNT PAYABLE:     $".number_format($order['order_amount'],2)."\r\n";
$message .= "GST ON SERVICES:          $".number_format(($order['order_amount']/110)*10,2)."\r\n\r\n";

$message .= "ACCOUNT PAID IN FULL VIA CREDIT CARD\r\n\r\n";
$message .= "=============================================================\r\n";

$message .= "DESCRIPTION OF SERVICES\r\n\r\n";

$message .= "Code List Name: ".$this->session->userdata('codelistname') . "\r\n";
$message .= "Quantity: ".$quantity ."\r\n";
$message .= "Single-use Developmental Reports Purchased: ".$order['no_codes_d']."\r\n";
$message .= "Single-use Thriving Reports Purchased: ".$order['no_codes_t']."\r\n";

最后两个$message变量是问题所在。

这封电子邮件看起来如下:

应付总额:1 771.00美元 服务税:$161.00 以信用卡全数支付的帐户 ============================================================= 服务说明 代码列表名称: fggdgfdgfd 数量: 12 购买单用途发展报告:购买7份单一用途报告:5 购买多用途发展报告:5购买多用途发展报告:5

解决了。现在寻找它背后的理解。

经过多次测试,失败的公式是: failure =X+ Y:

Failure =X字符长度+空格。

此外,它还解决了Microsoft 20xx出现的问题,但hotmail或gmail却没有。

示例:

$message .=“单一用途:发展报告: ddddd\r\n";/失效长度41

$message .=“单用途: DevelopmentaldReportsd:dddddd\r\n";/ fail 41

"Single-use:dDevelopmentaldReportsd:dddddd\r\n";//通行证长度41

"Single-use:DevelopmentaldReportsd:dddddddddddddddddddddddddddddd\r\n";// $message .=

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-13 20:16:29

注意:这个答案适用于使用CodeIgniter版本2.1.3的开发人员

这在任何其他PHP框架上都没有经过测试。

基于许多测试,通过更改字符长度、添加/删除空格以及使用不同的电子邮件服务进行测试:

  • Outlook第20版
  • 热邮
  • Gmail

可以安全地得出结论,CodeIgniter版本2.1.3解析消息的方式是:给字符串长度约40个字符+1个空格字符+换行符,并将电子邮件发送到上述三封电子邮件中,只有Outlook才能确定换行符是“额外”的换行符,从而删除它。

可以更改视图设置以禁用Outlook删除额外的换行符

如链接所示:Microsoft指南禁用额外的Newline删除

轻松开发解决方案:

将字符串长度保持在最多39个字符(包括空格)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18757398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档