Email 在CakePHP中发送SMTP电子邮件时,未设置主题
在我将CakePHP应用程序切换为使用SMTP发送电子邮件(使用电子邮件组件)之后,现在发送的所有电子邮件都没有主题 他们以前总是有一个主题,其他的东西现在都可以用了,只是没有主题。我联系了我正在使用的smtp服务器(SendGrid)的支持人员,他们向我保证电子邮件中没有主题标题 CakePHP在默认情况下使用Email 在CakePHP中发送SMTP电子邮件时,未设置主题,email,cakephp,smtp,cakephp-1.3,Email,Cakephp,Smtp,Cakephp 1.3,在我将CakePHP应用程序切换为使用SMTP发送电子邮件(使用电子邮件组件)之后,现在发送的所有电子邮件都没有主题 他们以前总是有一个主题,其他的东西现在都可以用了,只是没有主题。我联系了我正在使用的smtp服务器(SendGrid)的支持人员,他们向我保证电子邮件中没有主题标题 CakePHP在默认情况下使用\u mail()函数,或者在使用smpt时使用\u smtp()函数 我查看了代码,可以看到\u mail函数在哪里使用主题,但是我没有看到\u smtp或\u smtpSend使用$
\u mail()
函数,或者在使用smpt时使用\u smtp()
函数
我查看了代码,可以看到\u mail
函数在哪里使用主题,但是我没有看到\u smtp
或\u smtpSend
使用$this->subject
的任何地方。我错过什么了吗
我需要做些什么才能让这个主题发挥作用
更新添加代码: 以下是我从控制器发送电子邮件的方式:
$this->Email->to = $data['Order']['user_email'];
$this->Email->subject = 'Your Order Has Shipped';
$this->Email->template = 'order_shipped';
$this->Email->layout = 'sussex';
$this->Email->sendAs = 'html';
$this->Email->send();
电子邮件组件是标准的Cake 1.3电子邮件组件,只是我在send()
函数的开头添加了以下代码:
$this->smtpOptions = array(
'port'=>'587',
'timeout'=>'30',
'host' => 'smtp.sendgrid.net',
'username'=>'my_user',
'password'=>'*******',
'client' => 'www.example.com'
);
$this->delivery = 'smtp';
在上面提到的代码中,您正在电子邮件组件的发送方法中使用,在调用$this->uu createHeader()之前必须使用;。因为对于smtp传递,主题是在
\uuu createHeader
方法中设置的,所以有必要将$this->delivery='smtp'
在uu createHeader调用之前。我已经将电子邮件组件与smtp(使用gmail)一起使用,它工作正常,它可以正确设置主题和所有内容
我是这样用的:
$this->Email->reset();
$this->Email->smtpOptions = $options;
$this->Email->delivery = 'smtp';
$this->Email->from = $from;
$this->Email->to = $to;
$this->Email->subject = $tittle;
if ( $this->Email->send($message) ) {
return true;
} else {
return false;
}
而$options是
$options = array(
'port'=>'465',
'timeout'=>'30',
'host'=>'ssl://smtp.gmail.com',
'username'=>'yourAccount@gmail.com',
'password'=>'yourPassword'
);
此外_smtp函数还使用使用主题的
到底是什么原因导致了这件事。您可能有一些编码问题,您是否在主题中使用普通字符?cake中的一些函数会死掉而不会逃过它们或其他东西(我通常有西班牙语文本,所以我第一手就知道了)。您可以在创建标头的位置插入一个var_转储,以查看它是如何执行的
希望这对你有所帮助,如果不发表评论:)我也面临同样的问题。调查后,我发现服务器上没有安装php mbstring。安装PHP Mbstring之后,问题就解决了,我在电子邮件中得到了主题 因为Cakephp使用这个库进行字符串处理,所以它需要这个库
yum install php-mbstring
您可以添加发送电子邮件的代码吗?仅供参考,cakephp在smtp电子邮件组件的_createHeader方法中添加主题。@Shrey Gupta电子邮件组件中有很多代码,您希望看到哪一部分…或者只是我的控制器中发送电子邮件的部分?您的代码仅用于发送电子邮件,它使用电子邮件组件。@Shrey Gupta我已经添加了代码。