使用 Codeigniter 在电子邮件上添加“发件人”标头
Posted
技术标签:
【中文标题】使用 Codeigniter 在电子邮件上添加“发件人”标头【英文标题】:Add 'From' Header on email using Codeigniter 【发布时间】:2020-06-13 10:35:47 【问题描述】:我正在使用 CPanel 中的 Codeigniter,我的代码已经发送了一封邮件,但是当它到达接收者时,主机名会显示在发件人上。 我尝试了一些问题的答案:Change the sender name php mail instead of sitename@hostname.com,但在 Codeigniter 中,它们不起作用。
这是我的代码:
$config = Array(
'protocol' => 'ssmtp',
'smtp_host' => 'ssl://ssmtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => 'mail@domainiwant.com',
'smtp_pass' => 'password',
'mailtype' => 'html',
'charset' => 'iso-8859-1',
'useragent' => 'MY NAME',
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");
$this->email->from('mail@domainiwant.com', 'MY NAME');
$email_to = 'receiver@gmail.com';
$this->email->to($email_to);
$this->email->message('Message testing ...');
$this->email->send();
但是,正如我所说,当邮件到达收件人时,它们会显示主机名和完全不同的邮件地址,就像我放在 $config
上的邮件地址一样
我知道这只会设置the envelope sender
,但我想将邮件地址设置为mail@domainiwant.com
,而不是使用somemail@host.com.ex
接收邮件
【问题讨论】:
您有 SMTP 服务器吗?请向服务提供商索取。 根据 CI 自己的文档,$config['protocol']
应该设置为smtp
,而不是ssmtp
。由于ssmtp
不是配置中可接受的值,您的代码可能默认为mail
设置,这将尝试使用您自己的服务器作为发件人而不是使用您的SMTP 设置来传递邮件。试试看,让我知道
【参考方案1】:
根据 CodeIgniter 的电子邮件库的文档HERE,您的整个问题是一个简单的错字。
$config['protocol']
允许将 mail
、sendmail
和 smtp
作为值。如果您不设置变量或使用不允许的值,则整个库默认为mail
,它会尝试使用您自己的服务器作为邮件网关(这解释了为什么您的发件人地址显示为username@servername
)
将协议从 ssmtp
更改为 smtp
,这样您就可以真正使用您打算使用的 Google SMTP 服务器,并且您会得到预期的结果
【讨论】:
是的,有效。我没有意识到我使用了错误的协议以上是关于使用 Codeigniter 在电子邮件上添加“发件人”标头的主要内容,如果未能解决你的问题,请参考以下文章
在 OpenShift / PHP / CodeIgniter 上发送邮件
在 wamp 服务器上使用 codeigniter 发送邮件时出错