繁体   English   中英

我正在尝试使用codeigniter从cPanel发送电子邮件,但每次收到错误消息时都说连接超时

[英]I am trying to send email from cPanel using codeigniter but every time I get the error saying connection time out

我已使用以下代码发送电子邮件。

    $config = Array(
      'protocol' => 'smtp',
      'smtp_host' => 'smtp.sendgrid.net',
      'smtp_user' => 'username',
      'smtp_pass' => 'password',
      'smtp_port' => 587,
      'crlf' => "\r\n",
      'newline' => "\r\n",
      'mailtype' => "html"
    );

    $this->load->library('email', $config);
    $this->email->set_newline("\r\n");
    $this->email->from($email);
    $this->email->to($to);
    $this->email->subject($subject);
    $this->email->message($message);

这段代码在我的本地主机上运行良好,但是每次我从cPanel运行此代码时,都会收到错误提示。

错误:

A PHP Error was encountered
Severity: Warning
Message: fsockopen() [function.fsockopen]: unable to connect to smtp.sendgrid.net:587 (Connection timed out)
Filename: libraries/Email.php
Line Number: 1689

A PHP Error was encountered
Severity: Warning
Message: fwrite(): supplied argument is not a valid stream resource
Filename: libraries/Email.php
Line Number: 1846

A PHP Error was encountered
Severity: Warning
Message: fgets(): supplied argument is not a valid stream resource
Filename: libraries/Email.php
Line Number: 1869

A PHP Error was encountered
Severity: Warning
Message: fwrite(): supplied argument is not a valid stream resource
Filename: libraries/Email.php
Line Number: 1846

A PHP Error was encountered
Severity: Warning
Message: fgets(): supplied argument is not a valid stream resource
Filename: libraries/Email.php
Line Number: 1869

A PHP Error was encountered
Severity: Warning
Message: fwrite(): supplied argument is not a valid stream resource
Filename: libraries/Email.php
Line Number: 1846

A PHP Error was encountered
Severity: Warning
Message: fgets(): supplied argument is not a valid stream resource
Filename: libraries/Email.php
Line Number: 1869

A PHP Error was encountered
Severity: Warning
Message: fwrite(): supplied argument is not a valid stream resource
Filename: libraries/Email.php
Line Number: 1846

A PHP Error was encountered
Severity: Warning
Message: fgets(): supplied argument is not a valid stream resource
Filename: libraries/Email.php
Line Number: 1869

A PHP Error was encountered
Severity: Warning
Message: fwrite(): supplied argument is not a valid stream resource
Filename: libraries/Email.php
Line Number: 1846

A PHP Error was encountered
Severity: Warning
Message: fwrite(): supplied argument is not a valid stream resource
Filename: libraries/Email.php
Line Number: 1846

A PHP Error was encountered
Severity: Warning
Message: fgets(): supplied argument is not a valid stream resource
Filename: libraries/Email.php
Line Number: 1869

A PHP Error was encountered
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at /home3/pinesof1/public_html/flyannapurna.com/system/core/Exceptions.php:185)
Filename: libraries/Session.php
Line Number: 688

A PHP Error was encountered
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at /home3/pinesof1/public_html/flyannapurna.com/system/core/Exceptions.php:185)
Filename: libraries/Session.php
Line Number: 688

A PHP Error was encountered
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at /home3/pinesof1/public_html/flyannapurna.com/system/core/Exceptions.php:185)
Filename: libraries/Session.php
Line Number: 688

A PHP Error was encountered
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at /home3/pinesof1/public_html/flyannapurna.com/system/core/Exceptions.php:185)
Filename: libraries/Session.php
Line Number: 688

A PHP Error was encountered
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at /home3/pinesof1/public_html/flyannapurna.com/system/core/Exceptions.php:185)
Filename: libraries/Session.php
Line Number: 688

A PHP Error was encountered
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at /home3/pinesof1/public_html/flyannapurna.com/system/core/Exceptions.php:185)
Filename: helpers/url_helper.php
Line Number: 542

谁能告诉我该怎么办?

尝试将“最大执行时间”设置为更大的数字,然后查看是否适合您。

<?php
    ini_set('max_execution_time', 108000);
?>

要么

您可以更改您的php.ini文件

我不知道什么不适用于您的代码,但是可以肯定,有一个最简单的解决方案应该每次都可以使用,我使用它:

$to = "yourTarget@someDomain.com";
$subject = "Your subject";
$message = "<html><body>Your message</body></html>";

$headers = "MIME-Version: 1.0" ."\r\n"
    ."From: theMailYouWantToUse@domain.com" ."\r\n"
    ."Content-type:text/html;charset=UTF-8" ."\r\n"
    ."Reply: reply@yourDomain.com" ."\r\n"
    ."X-Mailer: PHP/" .phpversion();

$mail_success = mail($to,$subject,$message,$headers);

注意 :您需要所有这些标头,否则邮件将变为垃圾邮件。

奖金

我认为最好在邮件中包含一个文件,并且经常需要修改一些内容。 发送前只需使用以下代码:

$message = file_get_contents("file.html");
$message = str_replace("%param1%",$param1,$message);
$message = str_replace("%param2%",$param2,$message);

第一个错误Message: fsockopen() [function.fsockopen]: unable to connect to smtp.sendgrid.net:587 (Connection timed out)说明了您的许多问题。 这意味着您无法访问端口587。 可能由于以下几个原因而发生:

  • 此端口在您的服务器上被阻止。
  • 服务器的IP在smtp.sendgrid.net上被阻止(可能您的服务器已列入黑名单)
  • 服务器上的网络问题

据我所见,在smtp.sendgrid.net上为我打开了587端口以及25端口。 也尝试25端口,看看是否有相同的问题。 如果仍然出现此错误,请让托管公司或系统管理员检查服务器防火墙的587端口。 您也可以尝试通过telnet <DOMAIN_NAME> <PORT_NUMBER>来查看是否可以从服务器连接到特定端口,这可能对查找导致此错误的答案有很大帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM