Codeigniter发送邮件在本地主机中工作,但不在服务器中工作

dba5bblo  于 2022-12-07  发布在  其他
关注(0)|答案(2)|浏览(150)

我正在尝试的

我正在构建一个codeigniter应用程序,需要发送邮件。当我尝试从本地主机发送邮件时,我的邮件配置工作正常。但当在服务器上托管时,它不工作。

邮件配置

var $useragent      = "CodeIgniter";
var $mailpath       = "/usr/sbin/sendmail"; // Sendmail path
var $protocol       = "smtp";   // mail/sendmail/smtp
var $smtp_host      = "send.one.com";       // SMTP Server.  Example: mail.earthlink.net
var $smtp_user      = "no-reply@domain.com";        // SMTP Username
var $smtp_pass      = "pass";       // SMTP Password
var $smtp_port      = "25";     // SMTP Port
var $smtp_timeout   = 60;       // SMTP Timeout in seconds
var $smtp_crypto    = "";       // SMTP Encryption. Can be null, tls or ssl.
var $wordwrap       = TRUE;     // TRUE/FALSE  Turns word-wrap on/off
var $wrapchars      = "76";     // Number of characters to wrap at.
var $mailtype       = "html";   // text/html  Defines email formatting
var $charset        = "utf-8";  // Default char set: iso-8859-1 or us-ascii
var $multipart      = "mixed";  // "mixed" (in the body) or "related" (separate)
var    $alt_message         = '';       // Alternative message for HTML emails
var $validate       = FALSE;    // TRUE/FALSE.  Enables email validation
var $priority       = "1";      // Default priority (1 - 5)
var $newline        = "\r\n";       // Default newline. "\r\n" or "\n" (Use "\r\n" to comply with RFC 822)
var $crlf           = "\r\n";

从服务器发送时出现以下错误

A PHP Error was encountered

 Severity: Warning

 Message: fsockopen(): unable to connect to send.one.com:25 (Connection timed out)

 Filename: libraries/Email.php

 Line Number: 1689

该应用程序托管在www.example.com上one.com

wgxvkvu9

wgxvkvu91#

我遇到了同样的问题。在尝试了几次都没有找到解决方案后,我将我的协议更改为mail。如果您正在更改电子邮件协议,您可能会收到以下错误:

A PHP Error was encountered
Severity: Warning
Message: mail(): Policy restriction in effect. The fifth parameter is disabled on this system
Filename: libraries/Email.php
Line Number: 1537

只需在/system/libraries/email. php中修改函数send_with_mail()中的代码即可

if ( ! mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str, "-f ".$this->clean_email($this->_headers['From'])))

if ( ! mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str))

因为:“//大多数使用“-f”标志的sendmail文档在它后面缺少空格,但是//我们遇到了似乎需要它的服务器。”

  • 希望有人能给予一个使用smtp发送邮件的解决方案。*
carvr3hs

carvr3hs2#

我也在寻找解决方案,大多数时候每件事都很好,但在服务器上只是地狱每件事.但经过多次尝试一件事,我明白,作为每不同的服务器,如- Godaddy,Plesk,Hostinger等..这是一个游戏的协议和端口号一样-

var $protocol  = "smtp";
var $protocol  = "tls";
var $protocol  = "imps";
var $protocol  = "mail";
var $protocol  = "sendmail";

端口相同-

var $smtp_port = "25"; //It works most of time on localhost
var $smtp_port = "465"; //For gmail
var $smtp_port = "587"; // Sometime work for gmail and for others
var $smtp_port = "995"; // On few cases

还有一些smtp用户的情况

var $smtp_user  = "ssl://smtp.gmail.com";
var $smtp_user  = "ssl://smtp.googlemail.com";
var $smtp_user  = "tls://smtp.yourmail.com";
var $smtp_user  = "imps://smtp.yourmail.com";
var $smtp_user  = "smtp.gmail.com";
var $smtp_user  = "smtp.googlemail.com";

但大多数服务器不允许ssl://或所有其他前缀,他们直接想要的电子邮件地址。是的,这是混淆,但它是真实的配置服务器上的电子邮件,这就像第一次在服务器上的用户的里程碑,但之后你知道如何在服务器上的事情,你会很容易找到你的解决方案或没有。但祝你好运。

相关问题