Email 在CakePHP中发送SMTP电子邮件时,未设置主题

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使用$

在我将CakePHP应用程序切换为使用SMTP发送电子邮件(使用电子邮件组件)之后,现在发送的所有电子邮件都没有主题

他们以前总是有一个主题,其他的东西现在都可以用了,只是没有主题。我联系了我正在使用的smtp服务器(SendGrid)的支持人员,他们向我保证电子邮件中没有主题标题

CakePHP在默认情况下使用
\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我已经添加了代码。